C++-zu-JSON-Konverter
C++-Structs oder -Objekte einfügen. Sauberes JSON zurückbekommen.
Was das Tool macht
Wenn du schon mal ein JSON-Payload gebraucht hast, das einen C++-Struct spiegelt — für eine API, eine Fixture oder ein Config-File — kennst du die Schleife: nlohmann::json reinziehen, den to_json-Kleber schreiben, neu bauen. C++ hier einfügen und du bekommst gültiges JSON, ohne irgendwas davon. Funktioniert mit einem einzelnen Initializer, mit einer ganzen Header-Datei voller structs oder mit etwas, das in verschachtelten Templates schwimmt — das Ergebnis ist dasselbe: ein sauberes JSON-Dokument, jedes Feld erhalten.
Der Konverter weiß, wie C++-Werte tatsächlich serialisiert werden. std::string wird zu einem JSON-String, numerische Literale wie 49.99f oder 42u werden zu JSON-Zahlen ohne Suffix, bool wird zu true/false, und std::vector<T> / std::array<T,N> werden zu JSON-Arrays. Ein std::optional<T> mit std::nullopt fällt auf null; mit Wert wird der innere Typ serialisiert. std::map und std::unordered_map mit String-Keys werden zu JSON-Objekten — nach den Konventionen von cppreference.
Designated Initializers aus C++20 (.field = value) werden unterstützt, ebenso Aggregate-Initializer-Listen. Mehrere structs auf einmal einfügen und jeder kommt als Top-Level-Eintrag im JSON raus, verschachtelte Typen ausgepackt. Wenn du aus der Boost.JSON-Welt kommst: der Output entspricht dem, was du von boost::json::value_from erwarten würdest — nur ohne Template-Akrobatik.
So geht's
Drei Schritte. Egal ob du eine einzelne Initializer-Liste einfügst oder einen kompletten Header mit einem Dutzend Structs.
C++ einfügen (oder Beispiel laden)
Pack dein C++ einfach in den linken Editor. Eine struct-Definition, eine Klasse, eine Initializer-Liste, mehrere Typen oder verschachtelte Strukturen — alles okay. Auf Beispiel laden klicken, wenn du erst ein realistisches Beispiel sehen willst.
Du musst #include-Direktiven, Namespaces oder Templates nicht rauspfriemeln. Lass die C++-Syntax so wie sie ist — der Parser regelt das. Als Referenz zum Standard hat ISO C++ das offizielle Material.
Konvertieren drücken
Klick auf den grünen Konvertieren-Button. Das Tool liest das C++, behält jeden Struct und jedes Feld und gibt das JSON in einem Rutsch aus. Ein kleiner Lade-Indikator zeigt sich währenddessen.
JSON kopieren
Rechts erscheint eingerücktes JSON. Kopier es in deinen REST-Call, die Test-Fixture, ein Config-File neben dem CMakeLists oder die Doku. Das war's.
Wann das wirklich was bringt
API-Request-Payloads
Du hast einen C++-Request-Struct und brauchst das JSON für curl oder Postman. Struct rein, JSON raus, weiter geht's.
Config-File-Templates
Ein Settings-Struct mit 40 Membern wird zum editierbaren JSON-Template — kein handgeschriebenes Gerüst, keine vergessenen Keys.
Docs, die zum Code passen
Generiere JSON-Beispiele für README oder API-Referenz direkt aus deinen echten Structs, damit die Doku aufhört, von der Realität abzudriften.
Test-Fixtures und Seeds
Mach aus den Initializer-Listen deiner Unit-Tests JSON-Seed-Files für Integrationstests, Mock-Server oder Datenbank-Loader.
Häufige Fragen
Brauche ich nlohmann::json oder Boost installiert?
Nein. Das Tool läuft serverseitig und führt deinen Code nicht aus — du bekommst JSON, ohne eine Serialisierungs-Library einzubinden. Falls du zur Laufzeit eine Library willst: nlohmann/json und Boost.JSON sind beides solide Wahlen.
Wie sieht's mit std::optional, std::variant und Smart Pointern aus?
Ein std::optional<T> mit std::nullopt wird zu null; mit Wert wird der innere Typ serialisiert. std::unique_ptr und std::shared_ptr werden genauso behandelt — null wenn leer, sonst der gezeigte Wert. std::variant nimmt die aktuell aktive Alternative.
Und Container wie std::vector und std::map?
std::vector, std::array, std::list, std::set und std::deque werden alle zu JSON-Arrays. std::map / std::unordered_map mit String-Keys werden zu JSON-Objekten; bei Nicht-String-Keys werden die Keys entsprechend der Container-Semantik von cppreference stringifiziert.
Kann ich mehrere Structs auf einmal einfügen?
Ja — pack einen ganzen Header oder eine .cpp-Datei rein. Jedes Top-Level-Aggregat landet als eigener Key im JSON, verschachtelte Typen werden ausgepackt. Geerbte Member aus Basisklassen sind auch drin.
Wird mein Code gespeichert?
Dein Code geht ans Backend zur Konvertierung und wird nicht persistiert — wir loggen das Payload nicht. Wie immer gilt: Wenn der Code wirklich sensibel ist, wirf vorher einen kurzen Blick drauf.
Was ist, wenn der Code Templates, Makros oder Lambdas enthält?
Templates mit konkreten Typen laufen problemlos. Uninstanziierte Templates, Makros und Lambdas werden als null ausgegeben, statt den ganzen Run zu kippen — der Rest deiner Daten kommt trotzdem durch. Offensichtliche Syntaxfehler solltest du vorher beheben — der Parser ist nachsichtig, aber kein vollwertiger Compiler.
Andere Tools, die dir vielleicht auch helfen
C++ zu JSON ist nur ein Teil. Diese hier passen gut dazu: