JSON naar C++ converter — Structs genereren
Zet JSON online om naar C++-structs of -klassen met nlohmann/json from_json en to_json, std::optional-velden en namespaces. Gratis, direct en privé in je browser.
🔒 Draait volledig in je browser — niets wordt geüploadC++-types genereren uit JSON
C++ heeft geen ingebouwde reflectie, dus JSON koppelen aan je eigen types betekent meestal dat je voor elk object in de payload een struct en een paar serialisatiefuncties schrijft. Deze JSON-naar-C++-converter genereert beide op basis van een voorbeeld. Elk JSON-object wordt een struct (of een klasse met getters en setters), sleutels worden members in snake_case, geneste objecten worden eigen types, arrays worden std::vector<T>, gehele getallen worden int64_t, getallen met decimalen worden double, en velden die in een deel van het voorbeeld ontbreken of null zijn, worden std::optional<T>. Alles wordt verpakt in de namespace die je kiest en uitgegeven als één header met #pragma once.
De type-inferentie wordt uitgevoerd door quicktype, dat alle elementen van elke array samenvoegt voordat een type wordt gekozen. Een veld dat maar in sommige items voorkomt, wordt toch als optioneel vastgelegd, zodat het parsen van de volledige respons niet misgaat door een ontbrekende sleutel.
Integratie met nlohmann/json
De gegenereerde header is ontworpen voor nlohmann/json, de populairste JSON-bibliotheek voor modern C++. Voor elk type definieert hij from_json- en to_json-overloads die members terugkoppelen aan de oorspronkelijke JSON-sleutels, plus kleine hulpfuncties voor optionele waarden. Zodra json.hpp beschikbaar is, is het lezen van een document één aanroep van nlohmann::json::parse(text).get<Root>() en het terugschrijven nlohmann::json j = value;. Vink Types only aan als je alleen de declaraties nodig hebt — bijvoorbeeld voor een andere serializer — en Use Boost als je toolchain C++17 niet kan gebruiken.
Tips voor productiecode
Plak een volledig voorbeeld met meerdere array-items en ingevulde optionele velden, zodat de types nauwkeurig worden. Lege arrays en null-waarden vallen terug op nlohmann::json, wat je meestal wilt vervangen. Hernoem het roottype zodat het bij je domein past, kies een namespace die bij je project hoort en draai clang-format over het resultaat. Controleer de breedte van gehele getallen, overweeg enum class voor strings met een vaste set waarden en let op dat datum-tijdstrings std::string blijven, zodat je ze kunt parsen met de bibliotheek van je keuze. Alle verwerking gebeurt lokaal, dus interne payloads blijven op je eigen computer.
Hoe te gebruiken
- Plak de JSONPlak een JSON-document of klik op Load sample.
- ConfigureerStel de naam van het roottype, de namespace, de struct- of klassestijl en ondersteuning voor optionele velden in.
- Voeg de header toeKopieer de code of download een .hpp-bestand en neem het op naast json.hpp.
Veelgestelde vragen
Welke JSON-bibliotheek gebruikt de gegenereerde code?
from_json- en to_json-overloads, dus nlohmann::json::parse(text).get<Root>() werkt meteen.Welke C++-standaard is vereist?
std::optional gebruiken. Vink Use Boost aan om in plaats daarvan boost::optional te gebruiken als je vastzit aan een oudere standaard.