C++ naar JSON Converter
Plak C++ structs of objecten. Krijg schone JSON terug.
Wat deze tool doet
Als je ooit een JSON-payload nodig had die een C++-struct spiegelt — om een API te voeden, een fixture, of een config-bestand — dan ken je het riedeltje: nlohmann::json erbij trekken, de to_json-lijm schrijven, opnieuw bouwen. Plak je C++ hier en krijg geldige JSON terug zonder dat alles. Werkt met één enkele initializer, met een hele header-file vol structs, of met iets met geneste templates — zelfde resultaat: een schoon JSON-document met elk veld behouden.
De converter snapt hoe C++-waarden daadwerkelijk serialiseren. std::string wordt een JSON-string, numerieke literals als 49.99f of 42u worden JSON-getallen zonder de suffix, bool wordt true/false, en std::vector<T> / std::array<T,N> worden JSON-arrays. Een std::optional<T> met std::nullopt valt terug op null; met waarde wordt het binnenste type geserialiseerd. std::map en std::unordered_map met string-keys worden JSON-objects, volgens de cppreference-conventies.
Designated initializers uit C++20 (.field = value) worden afgehandeld, net als aggregate initializer lists. Plak meerdere structs tegelijk en elk komt als top-level entry uit de JSON, met geneste types uitgeklapt. Als je uit de Boost.JSON-wereld komt: de output komt overeen met wat je van boost::json::value_from zou verwachten — zonder de template-acrobatiek.
Hoe je het gebruikt
Drie stappen. Werkt of je nu één initializer list plakt of een hele header met een dozijn structs.
Plak je C++ (of laad het voorbeeld)
Kieper je C++ zoals het is in de linker editor. Een struct-definitie, een class, een initializer list, meerdere types of geneste structuren — allemaal prima. Klik op Voorbeeld laden als je eerst een realistisch geval wilt zien.
Je hoeft #include-directives, namespaces of templates niet weg te halen. Laat de C++-syntax intact — de parser handelt het af. Voor referentie naar de standaard staan bij ISO C++ de officiële materialen.
Klik Converteren
Klik op de groene Converteren-knop. De tool leest het C++, behoudt elke struct en elk veld, en spuwt het JSON in één keer uit. Een kort laadindicatortje verschijnt tijdens de run.
Kopieer de JSON
Het rechter paneel vult zich met ingesprongen JSON. Kopieer 'm naar je REST-call, een test fixture, een config-bestand naast je CMakeLists, of de documentatie. Zo rond is de lus.
Wanneer dit écht handig is
API-request-payloads
Je hebt een C++ request-struct en je wilt JSON om in curl of Postman te gooien. Struct plakken, JSON pakken, door.
Config-bestand templates
Een Settings-struct met 40 members wordt een kant-en-klaar JSON-template — geen handgeschreven steiger, geen vergeten keys.
Docs die bij de code passen
Genereer JSON-voorbeelden voor een README of API-reference direct vanuit je echte structs, zodat de documentatie niet meer wegdrijft van de werkelijkheid.
Test fixtures en seeds
Zet de initializer lists uit je unit tests om in JSON-seed-files voor integratietests, mock servers of database-loaders.
Veelgestelde vragen
Moet ik nlohmann::json of Boost geïnstalleerd hebben?
Nee. De tool draait server-side en voert je code niet uit — je krijgt JSON zonder een serialisatie-library erbij te halen. Wil je wél een runtime-library, dan zijn nlohmann/json en Boost.JSON allebei solide keuzes.
Doet-ie std::optional, std::variant en smart pointers?
Een std::optional<T> met std::nullopt wordt null; met waarde wordt het binnenste type geserialiseerd. std::unique_ptr en std::shared_ptr gaan hetzelfde — null als leeg, anders de aangewezen waarde. std::variant gebruikt het op dat moment actieve alternatief.
En containers zoals std::vector en std::map?
std::vector, std::array, std::list, std::set en std::deque worden allemaal JSON-arrays. std::map / std::unordered_map met string-keys worden JSON-objects; met niet-string-keys worden de keys als string geschreven volgens de container-semantiek van cppreference.
Mag ik meerdere structs tegelijk plakken?
Ja — plak een hele header of een .cpp-bestand. Elk top-level aggregate komt als eigen key in de JSON te staan, met geneste types uitgeklapt. Overgeërfde members uit base classes gaan ook mee.
Wordt mijn code opgeslagen?
Je code gaat naar de backend voor conversie en wordt niet opgeslagen — we loggen de payload niet. Zoals altijd: is de code echt gevoelig, loop hem dan even kort door voordat je plakt.
Wat als de code templates, macro's of lambdas bevat?
Templates met concrete types werken prima. Niet-geïnstantieerde templates, macro's en lambdas komen eruit als null in plaats van de hele run te laten klappen, dus de rest van je data komt gewoon door. Los duidelijke syntaxfouten eerst op — de parser is mild, maar geen volledige compiler.
Andere tools die van pas kunnen komen
C++ naar JSON is één puzzelstukje. Deze passen er goed bij: