Convertitore C++ a JSON
Incolla struct o oggetti C++. Ottieni JSON pulito in un attimo.
Cosa fa questo strumento
Se ti è mai capitato di servire un payload JSON che rispecchiasse uno struct C++ — per un'API, una fixture o un file di config — sai già la trafila: tirare dentro nlohmann::json, scrivere la colla to_json e ricompilare. Incolla qui il C++ e ti ritrovi JSON valido senza passare da niente di tutto questo. Funziona con un singolo initializer, con un intero header pieno di struct, o con qualcosa pieno di template annidati — il risultato è lo stesso: un documento JSON pulito con ogni campo preservato.
Il convertitore capisce davvero come i valori C++ vengono serializzati. std::string diventa una stringa JSON, letterali numerici come 49.99f o 42u diventano numeri JSON senza il suffisso, bool diventa true/false, e std::vector<T> / std::array<T,N> diventano array JSON. Un std::optional<T> con std::nullopt va a null; con valore serializza il tipo interno. std::map e std::unordered_map con chiavi string diventano oggetti JSON, secondo le convenzioni di cppreference.
Gli initializer designati di C++20 (.field = value) sono gestiti, così come gli initializer list aggregati. Incolla più struct insieme e ognuno esce come entry di primo livello nel JSON, con i tipi annidati espansi. Se vieni dal mondo Boost.JSON, l'output coincide con quello che ti aspetteresti da boost::json::value_from — senza però le acrobazie sui template.
Come si usa
Tre passi. Vale sia per un singolo initializer list che per un header intero con una dozzina di struct.
Incolla il C++ (oppure carica l'esempio)
Butta il C++ nell'editor a sinistra così com'è. Una definizione di struct, una classe, un initializer list, più tipi o strutture annidate — va tutto bene. Clicca Carica esempio se vuoi prima vedere un caso realistico.
Non serve togliere le direttive #include, i namespace o i template. Lascia la sintassi C++ intatta — ci pensa il parser. Se vuoi consultare lo standard, ISO C++ mantiene i materiali ufficiali.
Premi Converti
Clicca il pulsante verde Converti. Lo strumento legge il C++, preserva ogni struct e ogni campo, ed emette il JSON in una sola passata. Durante l'elaborazione vedi un piccolo indicatore di caricamento.
Copia il JSON
Il pannello di destra si riempie di JSON indentato. Copialo nella tua chiamata REST, in una fixture di test, in un file di config vicino al CMakeLists, o nella doc. Ciclo completo.
Quando torna davvero utile
Payload di richieste API
Hai uno struct di request in C++ e ti serve il JSON da buttare in curl o Postman. Incolli lo struct, ti porti via il JSON, vai avanti.
Template di file di configurazione
Uno struct Settings con 40 membri diventa un template JSON pronto da editare — niente impalcatura scritta a mano, niente chiavi dimenticate.
Docs che restano allineate al codice
Genera esempi JSON per un README o una reference API direttamente dai tuoi struct reali, così la documentazione smette di allontanarsi dalla realtà.
Fixture e seed per i test
Trasforma gli initializer list dei tuoi unit test in file JSON di seed per test d'integrazione, mock server o loader di database.
Domande frequenti
Devo avere nlohmann::json o Boost installati?
No. Lo strumento gira lato server e non esegue il tuo codice — ottieni JSON senza tirare dentro nessuna libreria di serializzazione. Se vuoi comunque una libreria a runtime, nlohmann/json e Boost.JSON sono entrambe scelte solide.
Gestisce std::optional, std::variant e gli smart pointer?
Un std::optional<T> con std::nullopt diventa null; con valore, viene serializzato il tipo interno. std::unique_ptr e std::shared_ptr sono trattati allo stesso modo — null se vuoti, il valore puntato altrimenti. std::variant usa l'alternativa attiva al momento.
E i container tipo std::vector e std::map?
std::vector, std::array, std::list, std::set e std::deque diventano tutti array JSON. std::map / std::unordered_map con chiavi string diventano oggetti JSON; con chiavi non-string le chiavi vengono convertite in stringa secondo la semantica dei container di cppreference.
Posso incollare più struct in una volta?
Sì — incolla un intero header o un file .cpp. Ogni aggregato di primo livello esce come chiave a sé nel JSON, con i tipi annidati espansi. Anche i membri ereditati dalle classi base vengono inclusi.
Il mio codice viene salvato?
Il codice viene inviato al backend per la conversione e non viene persistito — non logghiamo il payload. Come sempre, se il codice è davvero sensibile, dagli un'occhiata prima di incollarlo.
E se il codice contiene template, macro o lambda?
I template con tipi concreti funzionano senza problemi. Template non istanziati, macro e lambda vengono emessi come null invece di far fallire l'intera conversione, così il resto dei tuoi dati passa comunque. Prima correggi gli errori di sintassi evidenti — il parser è tollerante, ma non è un compilatore completo.
Altri strumenti che potrebbero servirti
C++ a JSON è un pezzo del puzzle. Questi ci stanno bene insieme: