DT Dev Tools

JSON zu C++ Konverter — Structs generieren

JSON online in C++-Structs oder -Klassen umwandeln, mit nlohmann/json from_json und to_json, std::optional-Feldern und Namespaces. Kostenlos und privat im Browser.

🔒 Läuft vollständig in Ihrem Browser — nichts wird hochgeladen

Werbung

C++-Typen aus JSON generieren

C++ hat keine eingebaute Reflection. JSON auf eigene Typen abzubilden bedeutet daher meist, für jedes Objekt der Nutzdaten eine Struct und ein Paar Serialisierungsfunktionen zu schreiben. Dieser JSON-zu-C++-Konverter erzeugt beides aus einem Beispiel. Jedes JSON-Objekt wird zu einer struct (oder einer Klasse mit Gettern und Settern), Schlüssel werden zu Membern in snake_case, verschachtelte Objekte erhalten eigene Typen, Arrays werden zu std::vector<T>, Ganzzahlen zu int64_t, Zahlen mit Nachkommaanteil zu double, und Felder, die in einem Teil des Beispiels fehlen oder null sind, werden zu std::optional<T>. Alles wird in den gewählten Namespace gepackt und als einzelner Header mit #pragma once ausgegeben.

Die Typinferenz übernimmt quicktype, das alle Elemente eines Arrays zusammenführt, bevor ein Typ gewählt wird. Ein Feld, das nur in einigen Einträgen vorkommt, wird trotzdem als optional erfasst, sodass das Parsen der vollständigen Antwort bei einem fehlenden Schlüssel keine Ausnahme auslöst.

Integration mit nlohmann/json

Der erzeugte Header ist für nlohmann/json ausgelegt, die beliebteste JSON-Bibliothek für modernes C++. Für jeden Typ definiert er from_json- und to_json-Überladungen, die die Member auf die ursprünglichen JSON-Schlüssel abbilden, sowie kleine Hilfsfunktionen für optionale Werte. Sobald json.hpp verfügbar ist, genügt zum Lesen eines Dokuments ein einziger Aufruf von nlohmann::json::parse(text).get<Root>(), und zurückgeschrieben wird es mit nlohmann::json j = value;. Aktiviere Types only, wenn du nur die Deklarationen brauchst — etwa für einen anderen Serializer — und Use Boost, wenn deine Toolchain C++17 nicht nutzen kann.

Tipps für Produktivcode

Füge ein vollständiges Beispiel mit mehreren Array-Einträgen und ausgefüllten optionalen Feldern ein, damit die Typen korrekt werden. Leere Arrays und Nullwerte fallen auf nlohmann::json zurück, was du meist ersetzen möchtest. Benenne den Wurzeltyp passend zu deiner Domäne um, wähle einen zu deinem Projekt passenden Namespace und lasse clang-format über das Ergebnis laufen. Prüfe die Breite der Ganzzahlen, erwäge enum class für Strings mit festem Wertebereich und beachte, dass Datums-/Zeit-Strings std::string bleiben, damit du sie mit der Bibliothek deiner Wahl parsen kannst. Die gesamte Verarbeitung findet lokal statt, interne Nutzdaten bleiben also auf deinem Rechner.

So verwenden Sie

  1. JSON einfügenFüge ein JSON-Dokument ein oder klicke auf Load sample.
  2. KonfigurierenLege Namen des Wurzeltyps, Namespace, Struct- oder Klassenstil und Unterstützung für optionale Felder fest.
  3. Header hinzufügenKopiere den Code oder lade eine .hpp-Datei herunter und binde sie neben json.hpp ein.

Häufig gestellte Fragen

Welche JSON-Bibliothek verwendet der generierte Code?
Er zielt auf nlohmann/json. Der Header enthält from_json- und to_json-Überladungen, sodass nlohmann::json::parse(text).get<Root>() sofort funktioniert.
Welcher C++-Standard wird benötigt?
Standardmäßig C++17, da optionale Felder std::optional verwenden. Aktiviere Use Boost, um stattdessen boost::optional zu nutzen, falls du an einen älteren Standard gebunden bist.
Kann ich Klassen mit Gettern und Settern erhalten?
Ja. Stelle Types auf Klassen mit Gettern/Settern um, um gekapselte Member zu erhalten, oder behalte einfache Structs für schlichte Datenhalter.
Wird mein JSON hochgeladen?
Nein. Der Header wird vollständig in deinem Browser erzeugt; es wird nichts an einen Server gesendet.
Werbung