C++ til JSON-konverterer
Lim inn C++-structs eller -objekter. Få ren JSON tilbake.
Hva verktøyet gjør
Hvis du noen gang har trengt en JSON-payload som speiler en C++-struct — for å fôre et API, en fixture eller en config-fil — kjenner du rundgangen: dra inn nlohmann::json, skriv to_json-limet, bygg på nytt. Lim inn C++ her og få gyldig JSON tilbake uten noe av det. Det takler en enkelt initializer, en hel header-fil full av structs, eller noe med nøstede templates — samme resultat: et rent JSON-dokument der hvert felt er bevart.
Konverteren forstår hvordan C++-verdier faktisk serialiseres. std::string blir en JSON-streng, numeriske literaler som 49.99f eller 42u blir JSON-tall uten suffikset, bool blir true/false, og std::vector<T> / std::array<T,N> blir JSON-arrayer. En std::optional<T> med std::nullopt faller til null; med en verdi blir den indre typen serialisert. std::map og std::unordered_map med strengnøkler blir JSON-objekter, i tråd med cppreference-konvensjonene.
Designated initializers fra C++20 (.field = value) håndteres, og det samme gjelder aggregate initializer lists. Lim inn flere structs på én gang, og hver og en kommer ut som en topp-entry i JSON-en, med nøstede typer pakket ut. Kommer du fra Boost.JSON-verdenen, matcher utdataen det du ville ventet fra boost::json::value_from — bare uten template-akrobatikken.
Sånn bruker du det
Tre steg. Funker enten du limer inn en enkelt initializer list eller en hel header med et dusin structs.
Lim inn C++-en din (eller last inn eksemplet)
Slipp C++-en din inn i venstre editor slik den står. En struct-definisjon, en klasse, en initializer list, flere typer eller nøstede strukturer — alt går fint. Trykk på Last inn eksempel hvis du først vil se et realistisk tilfelle.
Du trenger ikke fjerne #include-direktiver, namespaces eller templates. La C++-syntaksen stå — parseren tar det. Vil du slå opp i selve standarden, har ISO C++ det offisielle materialet.
Trykk Konverter
Klikk på den grønne Konverter-knappen. Verktøyet leser C++-en, beholder hver struct og hvert felt, og spytter ut JSON i én kjøring. En kort lastindikator vises mens det går.
Kopier JSON-en
Høyre panel fylles med innrykket JSON. Kopier den inn i REST-kallet ditt, en test fixture, en config-fil ved siden av CMakeLists, eller dokumentasjonen. Da er runden ferdig.
Når dette faktisk kommer til nytte
API-request-payloads
Du har en C++-request-struct og trenger JSON å slenge inn i curl eller Postman. Lim inn structen, hent JSON-en, videre.
Maler for config-filer
En Settings-struct med 40 medlemmer blir en JSON-mal klar til redigering — ingen håndskrevet stillas, ingen glemte nøkler.
Dokumentasjon som stemmer med koden
Generer JSON-eksempler til en README eller API-referanse rett fra de ekte structsene dine, så docsen slutter å drive bort fra virkeligheten.
Test fixtures og seeds
Gjør initializer lists fra unit-testene dine om til JSON-seedfiler for integrasjonstester, mock-servere eller databaselastere.
Vanlige spørsmål
Må jeg ha nlohmann::json eller Boost installert?
Nei. Verktøyet kjører på serversiden og eksekverer ikke koden din — du får JSON uten å dra inn et serialiseringsbibliotek. Vil du likevel ha et runtime-bibliotek, 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 blir null; med en verdi serialiseres den indre typen. std::unique_ptr og std::shared_ptr behandles likt — null hvis tomme, ellers verdien det pekes på. std::variant bruker det alternativet som er aktivt der og da.
Og containere som std::vector og std::map?
std::vector, std::array, std::list, std::set og std::deque blir alle JSON-arrayer. std::map / std::unordered_map med strengnøkler blir JSON-objekter; med ikke-streng-nøkler gjøres nøklene om til strenger etter container-semantikken hos cppreference.
Kan jeg lime inn flere structs på én gang?
Ja — lim inn en hel header eller en .cpp-fil. Hvert topp-nivå-aggregat kommer ut som sin egen nøkkel i JSON-en, med nøstede typer pakket ut. Arvede medlemmer fra baseklasser er også med.
Blir koden min lagret?
Koden sendes til backenden for konvertering og blir ikke lagret — vi logger ikke payloaden. Som alltid: hvis koden er virkelig sensitiv, kjør en rask gjennomgang før du limer inn.
Hva hvis koden har templates, makroer eller lambdas?
Templates med konkrete typer går greit. Uinstansierte templates, makroer og lambdas sendes ut som null i stedet for å velte hele kjøringen, slik at resten av dataene dine fortsatt kommer igjennom. Rett åpenbare syntaksfeil først — parseren er overbærende, men den er ikke en fullverdig kompilator.
Andre verktøy du kanskje trenger
C++ til JSON er én bit av puslespillet. Disse passer godt sammen med det: