Convertitore C a JSON
Incolla struct o initializer C. Ottieni JSON pulito.
Cosa fa questo tool
Se ti è mai servito un payload JSON che rispecchi una struct C — per testare un servizio buildato con gcc, la config di un device embedded, o un pezzo di documentazione — sai come va di solito: tirare dentro cJSON, scriversi il glue code campo per campo, ricompilare, debuggare. Incolla il C qui e ottieni JSON valido senza toccare un Makefile. Gestisce un singolo designated initializer, un header con più struct, o qualcosa con tipi annidati e array — stesso risultato: un documento JSON pulito con ogni campo preservato.
Il convertitore capisce come i valori C si serializzano davvero. int, long, size_t, float e double diventano numeri JSON. Gli array char e i letterali stringa diventano stringhe JSON. bool di stdbool.h diventa true/false. Gli array fissi (int items[3]) diventano array JSON della lunghezza giusta. Le struct annidate — un Address dentro un Order, per dire — si espandono in oggetti JSON annidati. Il comportamento segue il riferimento del linguaggio C.
I designated initializer del C99 (.field = value) sono supportati del tutto — è il modo normale in cui oggi si scrivono letterali di struct nel codice reale. Gli alias typedef vengono risolti, e i valori enum escono come valore numerico o come nome del simbolo a seconda del contesto. I tipi union serializzano il membro attivo. I puntatori a NULL diventano null JSON; altrimenti il valore puntato viene espanso. Incolla più struct insieme e ognuna diventa una chiave top-level dell'output.
Come si usa
Tre passaggi. Funziona uguale per un initializer da due righe e per un header completo con venti typedef.
Incolla il tuo C (o carica l'esempio)
Butta il tuo C nell'editor di sinistra così com'è. Una definizione di struct, un typedef, un designated initializer, più struct, o array annidati — va tutto bene. Clicca Load Sample per vedere prima un esempio realistico.
Non devi togliere le direttive #include né gli attributi specifici del compilatore. Lascia la sintassi ISO C così com'è — ci pensa il parser. Vanno bene sia C89 che C moderno (C11/C17/C23).
Clicca Convert
Clicca il pulsante verde Convert. Il tool legge il C, cammina su ogni struct, espande gli initializer e sputa il JSON in una passata. Durante l'esecuzione appare un indicatore di caricamento.
Copia il JSON
Il pannello di destra si riempie di JSON indentato. Copialo nel tuo client HTTP, nella config del firmware embedded, in una fixture di test, o in un README. È tutto il giro — nessuno step di build.
Quando serve davvero
Config embedded e firmware
Hai una struct di config device in C e ti serve una versione JSON per un endpoint REST o un tool di provisioning. Incolla la struct, prendi il JSON, spedisci.
Payload di richiesta API
Un servizio in C che wrappa un'API di terze parti. Incolla la struct della richiesta, hai JSON testabile con curl prima di cablare cJSON in produzione.
Fixture per test unitari
Trasforma i designated initializer dei tuoi unit test in file JSON seed per test di integrazione o confronti golden-file.
Docs che rispecchiano il codice
Genera esempi JSON per un README o un doc di protocollo direttamente dalle tue struct reali, così la documentazione resta in sync con l'header.
Domande comuni
Mi serve cJSON o Jansson installati?
No. Questo tool gira lato server e non compila il tuo codice — ottieni JSON senza tirarti dentro una libreria di serializzazione. Se vuoi un'opzione a runtime, cJSON è la scelta più comune; Jansson è un'altra ottima opzione.
Capisce i designated initializer e i typedef?
Sì. I designated initializer del C99 (.field = value) sono supportati del tutto, e gli alias typedef vengono risolti alla struct sottostante. I designated initializer annidati si espandono come li disporrebbe un compilatore.
E array, puntatori e NULL?
Gli array a dimensione fissa diventano array JSON col numero giusto di elementi. I membri puntatore a NULL diventano null JSON; altrimenti il valore puntato viene espanso. Gli array di struct funzionano uguale — ogni elemento è un oggetto JSON annidato.
Come sono gestiti enum e union?
I valori enum escono come nome del simbolo o come valore numerico a seconda del contesto. I tipi union serializzano il membro attualmente attivo. I bitfield (unsigned flags : 4) diventano numeri.
Il mio codice viene conservato?
Il tuo codice viene mandato al backend per la conversione e non viene persistito — non logghiamo il payload. Se il codice è davvero sensibile (firmware embedded con segreti, dettagli di protocollo interno), rivedilo prima di incollarlo.
E se il C ha macro o estensioni del compilatore?
Le macro che si espandono in un valore funzionano; le macro tipo-funzione che fanno logica vera vengono trattate come opache ed emesse come null invece di bloccare tutto. Gli attributi di GCC e MSVC (__attribute__, __declspec) vengono tollerati e ignorati.
Altri tool che ti possono servire
C a JSON è solo un pezzo del puzzle. Questi si accompagnano bene: