Incolla il C++ a sinistra e clicca "Converti" — lo trasformiamo in JSONIncolla codice C++

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.

1

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.

2

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.

3

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: