Indsæt C++ til venstre og klik på "Konvertér" — vi laver det om til JSONIndsæt C++-kode

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.

1

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.

2

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.

3

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: