C++ till JSON-konverterare
Klistra in C++-structs eller -objekt. Få tillbaka ren JSON.
Vad verktyget gör
Om du någon gång har behövt en JSON-payload som speglar en C++-struct — för att mata ett API, en fixture eller en configfil — så känner du igen rundan: dra in nlohmann::json, skriv to_json-limmet, bygg om. Klistra in C++ här och få giltig JSON tillbaka utan något av det. Funkar för en enda initializer, för en hel header-fil full av structs, eller något med nästlade templates — samma resultat: ett rent JSON-dokument där varje fält finns kvar.
Konverteraren förstår hur C++-värden faktiskt serialiseras. std::string blir en JSON-sträng, numeriska literals som 49.99f eller 42u blir JSON-tal utan suffix, bool blir true/false, och std::vector<T> / std::array<T,N> blir JSON-arrayer. std::optional<T> med std::nullopt faller till null; med ett värde serialiseras den inre typen. std::map och std::unordered_map med strängnycklar blir JSON-objekt, enligt cppreference-konventionerna.
Designated initializers från C++20 (.field = value) hanteras, liksom aggregate initializer lists. Klistra in flera structs samtidigt och var och en kommer ut som en topp-entry i JSON-en, med nästlade typer uppackade. Om du kommer från Boost.JSON-världen så matchar utdatan det du skulle vänta dig från boost::json::value_from — fast utan template-akrobatiken.
Så använder du det
Tre steg. Funkar oavsett om du klistrar in en enda initializer list eller en hel header med ett dussin structs.
Klistra in din C++ (eller ladda exemplet)
Släpp in din C++ i vänstra editorn som den är. En struct-definition, en klass, en initializer list, flera typer eller nästlade strukturer — allt går bra. Klicka på Ladda exempel för att först se ett realistiskt fall.
Du behöver inte plocka bort #include-direktiv, namespaces eller templates. Låt C++-syntaxen vara — parsern tar hand om det. För referens mot standarden finns officiellt material hos ISO C++.
Tryck på Konvertera
Klicka på den gröna Konvertera-knappen. Verktyget läser C++:en, bevarar varje struct och fält, och spottar ut JSON i en svep. En kort laddningsindikator visas medan det körs.
Kopiera JSON-en
Högra panelen fylls med indenterad JSON. Kopiera in den i ditt REST-anrop, en test fixture, en configfil bredvid CMakeLists, eller dokumentationen. Hela loopen.
När det faktiskt är användbart
API-request-payloads
Du har en C++-request-struct och behöver JSON att slänga in i curl eller Postman. Klistra in structen, hämta JSON, vidare.
Mallar för configfiler
En Settings-struct med 40 medlemmar blir en redo-att-editera JSON-mall — ingen handskriven ställning, inga bortglömda nycklar.
Dokumentation som matchar koden
Generera JSON-exempel för README eller API-referens direkt från dina riktiga structs, så slutar docsen att glida bort från verkligheten.
Test fixtures och seeds
Gör om initializer lists från dina unit-tester till JSON-seedfiler för integrationstester, mock-servrar eller databas-laddare.
Vanliga frågor
Behöver jag ha nlohmann::json eller Boost installerat?
Nej. Verktyget kör serverside och exekverar inte din kod — du får JSON utan att dra in något serialiseringsbibliotek. Vill du ändå ha ett runtime-bibliotek så är nlohmann/json och Boost.JSON båda solida val.
Klarar den std::optional, std::variant och smart pointers?
std::optional<T> med std::nullopt blir null; med ett värde serialiseras den inre typen. std::unique_ptr och std::shared_ptr hanteras likadant — null om tomma, annars det pekade värdet. std::variant använder den alternativ som är aktiv just då.
Och containers som std::vector och std::map?
std::vector, std::array, std::list, std::set och std::deque blir alla JSON-arrayer. std::map / std::unordered_map med strängnycklar blir JSON-objekt; med icke-strängnycklar stringifieras nycklarna enligt container-semantiken hos cppreference.
Kan jag klistra in flera structs på en gång?
Ja — klistra in en hel header eller en .cpp-fil. Varje topp-aggregat kommer ut som en egen nyckel i JSON-en, med nästlade typer uppackade. Ärvda medlemmar från basklasser är också med.
Sparas min kod?
Din kod skickas till backend för konvertering och sparas inte — vi loggar inte payloaden. Som alltid: är koden verkligen känslig, kika igenom den innan du klistrar in.
Hur blir det om koden har templates, makron eller lambdas?
Templates med konkreta typer fungerar fint. Oinstansierade templates, makron och lambdas skickas ut som null istället för att välta hela körningen, så resten av datan kommer igenom. Fixa uppenbara syntaxfel först — parsern är förlåtande, men inte en fullständig kompilator.
Andra verktyg du kanske behöver
C++ till JSON är en bit av pusslet. De här passar bra ihop med det: