JSON till C++ — Generera structs
Konvertera JSON till C++-structs eller klasser online med nlohmann/json from_json och to_json, std::optional-fält och namespaces. Gratis, snabbt och privat.
🔒 Körs helt i din webbläsare — ingenting laddas uppGenerera C++-typer från JSON
C++ har ingen inbyggd reflektion, så att mappa JSON till egna typer innebär oftast att man skriver en struct och sedan ett par serialiseringsfunktioner för varje objekt i datan. Den här JSON-till-C++-konverteraren genererar båda utifrån ett exempel. Varje JSON-objekt blir en struct (eller en klass med getters och setters), nycklar blir medlemmar i snake_case, nästlade objekt blir egna typer, arrayer blir std::vector<T>, heltal blir int64_t, decimaltal blir double, och fält som saknas eller är null i en del av exemplet blir std::optional<T>. Allt paketeras i det namespace du väljer och skrivs ut som en enda header skyddad med #pragma once.
Typinferensen görs av quicktype, som slår ihop alla element i varje array innan en typ väljs. Ett fält som bara finns i vissa poster fångas ändå som valfritt, så att tolkningen av hela svaret inte kastar fel på grund av en saknad nyckel.
Integration med nlohmann/json
Den genererade headern är utformad för nlohmann/json, det mest populära JSON-biblioteket för modern C++. För varje typ definierar den from_json- och to_json-överlagringar som kopplar medlemmarna till de ursprungliga JSON-nycklarna, samt små hjälpfunktioner för valfria värden. När json.hpp finns tillgänglig räcker ett enda anrop till nlohmann::json::parse(text).get<Root>() för att läsa ett dokument, och nlohmann::json j = value; för att skriva tillbaka det. Bocka i Types only om du bara behöver deklarationerna — till exempel för en annan serialiserare — och Use Boost om din verktygskedja inte kan använda C++17.
Tips för produktionskod
Klistra in ett komplett exempel med flera arrayposter och ifyllda valfria fält så att typerna blir korrekta. Tomma arrayer och null faller tillbaka på nlohmann::json, vilket du oftast vill byta ut. Byt namn på rottypen så att den passar din domän, välj ett namespace som passar ditt projekt och kör clang-format på resultatet. Granska heltalens bredd, överväg enum class för strängar med en fast uppsättning värden och tänk på att datum- och tidssträngar förblir std::string, så att du kan tolka dem med det bibliotek du föredrar. All bearbetning sker lokalt, så interna data stannar på din dator.
Hur man använder
- Klistra in JSONKlistra in ett JSON-dokument eller klicka på Load sample.
- KonfigureraAnge rottypens namn, namespace, struct- eller klassstil och stöd för valfria fält.
- Lägg till headernKopiera koden eller ladda ner en .hpp-fil och inkludera den bredvid json.hpp.
Vanliga frågor
Vilket JSON-bibliotek använder den genererade koden?
from_json- och to_json-överlagringar, så nlohmann::json::parse(text).get<Root>() fungerar direkt.Vilken C++-standard krävs?
std::optional. Bocka i Use Boost för att använda boost::optional i stället om du sitter fast med en äldre standard.