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

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.

1

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).

2

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.

3

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: