C++ til JSON-konverter
Indsæt C++-structs eller -objekter. Få ren JSON tilbage.
Hvad værktøjet gør
Hvis du nogensinde har haft brug for en JSON-payload, der spejler en C++-struct — til et API, en fixture eller en config-fil — så kender du omgangen: træk nlohmann::json ind, skriv to_json-limet, byg om. Indsæt C++ her og få gyldig JSON tilbage uden noget af det. Det kører med en enkelt initializer, en hel header-fil med flere structs, eller noget med nested templates — samme resultat: et rent JSON-dokument med hvert felt bevaret.
Konverteren forstår, hvordan C++-værdier faktisk serialiseres. std::string bliver til en JSON-streng, numeriske literals som 49.99f eller 42u bliver til JSON-tal uden suffixet, bool bliver til true/false, og std::vector<T> / std::array<T,N> bliver til JSON-arrays. En std::optional<T> med std::nullopt falder ned på null; med en værdi serialiseres den indre type. std::map og std::unordered_map med streng-nøgler bliver til JSON-objekter, efter cppreference-konventionerne.
Designated initializers fra C++20 (.field = value) bliver håndteret, ligesom aggregate initializer lists. Indsæt flere structs på én gang, og hver enkelt kommer ud som en entry på topniveau i JSON-en, med nested typer pakket ud. Hvis du kommer fra Boost.JSON-verdenen, matcher outputtet det, du ville forvente fra boost::json::value_from — bare uden template-akrobatikken.
Sådan bruger du det
Tre trin. Virker uanset om du indsætter en enkelt initializer list eller en hel header med et dusin structs.
Indsæt din C++ (eller indlæs eksemplet)
Smid din C++ ind i editoren til venstre som den er. En struct-definition, en klasse, en initializer list, flere typer eller nested strukturer — alt er fint. Klik på Indlæs eksempel hvis du vil se et realistisk tilfælde først.
Du behøver ikke pille #include-direktiver, namespaces eller templates ud. Lad C++-syntaksen stå — parseren klarer det. Vil du slå op i selve standarden, så har ISO C++ det officielle materiale.
Tryk på Konvertér
Klik på den grønne Konvertér-knap. Værktøjet læser C++'en, bevarer hver struct og hvert felt, og spytter JSON ud i ét hug. En kort indlæsningsindikator vises imens.
Kopiér JSON-en
Højre panel fyldes med indrykket JSON. Kopiér det ind i dit REST-kald, en test fixture, en config-fil ved siden af CMakeLists, eller dokumentationen. Så er loopet lukket.
Hvornår det faktisk er nyttigt
API-request-payloads
Du har en C++-request-struct og har brug for JSON at smide ind i curl eller Postman. Indsæt structen, hent JSON-en, videre.
Skabeloner til config-filer
En Settings-struct med 40 medlemmer bliver til en JSON-skabelon klar til at redigere — ingen håndskrevet stillads, ingen glemte nøgler.
Dokumentation der passer til koden
Generér JSON-eksempler til en README eller API-reference direkte fra dine rigtige structs, så dokumentationen holder op med at drive væk fra virkeligheden.
Test fixtures og seeds
Lav initializer lists fra dine unit-tests om til JSON-seedfiler til integrationstests, mock-servere eller databaseloadere.
Ofte stillede spørgsmål
Skal jeg have nlohmann::json eller Boost installeret?
Nej. Værktøjet kører serverside og eksekverer ikke din kode — du får JSON uden at trække et serialiseringsbibliotek ind. Vil du alligevel have et runtime-bibliotek, så er nlohmann/json og Boost.JSON begge solide valg.
Håndterer den std::optional, std::variant og smart pointers?
En std::optional<T> med std::nullopt bliver til null; med en værdi serialiseres den indre type. std::unique_ptr og std::shared_ptr behandles ens — null hvis tomme, ellers den pegede værdi. std::variant bruger det alternativ, der er aktivt i øjeblikket.
Og containers som std::vector og std::map?
std::vector, std::array, std::list, std::set og std::deque bliver alle til JSON-arrays. std::map / std::unordered_map med streng-nøgler bliver til JSON-objekter; med ikke-streng-nøgler stringificeres nøglerne efter container-semantikken hos cppreference.
Kan jeg indsætte flere structs på én gang?
Ja — indsæt en hel header eller en .cpp-fil. Hvert topniveau-aggregat kommer ud som sin egen nøgle i JSON-en, med nested typer pakket ud. Nedarvede medlemmer fra baseklasser er også med.
Bliver min kode gemt?
Din kode sendes til backend til konvertering og gemmes ikke — vi logger ikke payloaden. Som altid: hvis koden virkelig er følsom, så kig den hurtigt igennem før du indsætter.
Hvad hvis koden indeholder templates, makroer eller lambdas?
Templates med konkrete typer kører fint. Ikke-instansierede templates, makroer og lambdas sendes ud som null i stedet for at vælte hele kørslen, så resten af dine data kommer stadig igennem. Ret åbenlyse syntaksfejl først — parseren er mild, men den er ikke en fuld compiler.
Andre værktøjer du måske får brug for
C++ til JSON er ét stykke af puslespillet. De her går godt i spænd med det: