Lim inn C til venstre og klikk på "Convert" — vi gjør det om til JSONLim inn C-kode

Hva verktøyet gjør

Hvis du noen gang har trengt en JSON-payload som speiler en C-struct — for en test av en service bygd med gcc, en config for en embedded device, eller en bit dokumentasjon — vet du hvordan det vanligvis går: dra inn cJSON, skriv glue code per field, rebuild, debug. Lim inn C-en her og få gyldig JSON tilbake uten å røre en Makefile. Den takler en enkelt designated initializer, en header med flere structs, eller noe med nestede typer og arrays — samme resultat: et rent JSON-dokument der hvert field er bevart.

Converteren skjønner hvordan C-verdier faktisk serialiseres. int, long, size_t, float og double blir alle JSON numbers. char-arrays og string literals blir JSON strings. bool fra stdbool.h blir true/false. Faste arrays (int items[3]) blir JSON arrays med riktig lengde. Nestede structs — en Address inni en Order, for eksempel — folder seg ut til nestede JSON objects. Oppførselen følger C language reference.

C99 designated initializers (.field = value) er fullt støttet — det er den vanlige måten struct-literaler skrives i ekte kode i dag. typedef-alias blir løst opp, og enum-verdier kommer ut som enten den numeriske verdien eller symbolnavnet avhengig av konteksten. union-typer serialiserer den aktive memberen. Pointer members til NULL blir JSON null; ellers blir den pekte verdien foldet ut. Lim inn flere structs på én gang, og hver blir en top-level key i outputtet.

Slik bruker du det

Tre steg. Funker likt for en initializer på to linjer som for en hel header med tjue typedefs.

1

Lim inn C-en din (eller last inn eksempelet)

Slipp C-en din som den er i editoren til venstre. En struct-definisjon, en typedef, en designated initializer, flere structs, eller nestede arrays — alt er greit. Klikk på Load Sample for å se et realistisk eksempel først.

Du trenger ikke fjerne #include-direktiver eller compiler-spesifikke attributter. La ISO C-syntaksen stå — parseren fikser det. Både C89 og moderne (C11/C17/C23) går fint.

2

Trykk Convert

Klikk på den grønne Convert-knappen. Verktøyet leser C-en, går gjennom hver struct, folder ut initializers, og spytter ut JSON-en i ett drag. En loading indicator vises mens det går.

3

Kopier JSON-en

Panelet til høyre fylles med innrykket JSON. Kopier det inn i HTTP-klienten din, embedded firmware-configen, en test fixture, eller et README. Det er hele loopen — ingen byggsteg.

Når dette faktisk er nyttig

Embedded config og firmware

Du har en device config-struct i C og trenger en JSON-versjon til et REST endpoint eller et provisioning-verktøy. Lim inn structen, ta JSON-en, ship.

API request-payloads

En C-service som wrapper et third-party API. Lim inn request-structen, få JSON du kan teste med curl før du kobler på cJSON i produksjon.

Unit test fixtures

Gjør om designated initializers fra unit-testene dine til JSON seed files for integration tests eller golden-file-sammenligninger.

Docs som matcher koden

Generer JSON-eksempler for et README eller protokolldokument rett fra de ekte structene dine, så dokumentasjonen holder seg i sync med header-fila.

Vanlige spørsmål

Må jeg ha cJSON eller Jansson installert?

Nei. Verktøyet kjører server-side og kompilerer ikke koden din — du får JSON uten å dra inn et serialization library. Vil du ha et runtime-alternativ er cJSON det vanlige valget; Jansson er også bra.

Skjønner det designated initializers og typedefs?

Ja. C99 designated initializers (.field = value) er fullt støttet, og typedef-alias blir løst opp tilbake til structen under. Nestede designated initializers folder seg ut på samme måte som en compiler ville lagt dem ut.

Hva med arrays, pointers og NULL?

Fixed-size arrays blir JSON arrays med riktig antall elementer. Pointer members som er NULL blir JSON null; ellers blir den pekte verdien foldet ut. Arrays av structs fungerer likt — hvert element er et nestet JSON object.

Hvordan håndteres enums og unions?

enum-verdier kommer ut som enten symbolnavn eller numerisk verdi avhengig av konteksten. union-typer serialiserer den memberen som er aktiv der og da. Bitfields (unsigned flags : 4) blir numbers.

Blir koden min lagret?

Koden din sendes til backenden for konvertering og blir ikke persistert — vi logger ikke payloaden. Hvis koden er virkelig sensitiv (embedded firmware med secrets, interne protokolldetaljer), ta en titt på den før du limer inn.

Hva om C-en har macros eller compiler extensions?

Macros som folder ut til en verdi, funker; function-like macros som gjør ekte logikk, blir behandlet som opake og emittert som null i stedet for å krasje alt. GCC- og MSVC-attributter (__attribute__, __declspec) blir tolerert og ignorert.

Andre verktøy du kanskje trenger

C til JSON er bare én puslespillbrikke. Disse passer godt sammen med den: