Klistra in C till vänster och klicka på "Convert" — vi gör om det till JSONKlistra in C-kod

Vad verktyget gör

Om du någonsin behövt en JSON-payload som speglar en C-struct — för ett test av en service byggd med gcc, en config för en embedded device, eller en bit dokumentation — vet du hur det brukar gå: dra in cJSON, skriva glue code per field, builda om, debugga. Klistra in C här och få tillbaka giltig JSON utan att röra en Makefile. Den klarar en enstaka designated initializer, en header med flera structs, eller något med nästlade typer och arrays — samma resultat: ett rent JSON-dokument med varje field bevarat.

Convertern förstår hur C-värden faktiskt serialiseras. int, long, size_t, float och double blir alla JSON numbers. char-arrays och string literals blir JSON strings. bool från stdbool.h blir true/false. Fasta arrays (int items[3]) blir JSON arrays med rätt längd. Nästlade structs — en Address inuti en Order, till exempel — expanderar till nästlade JSON objects. Beteendet följer C language reference.

C99 designated initializers (.field = value) stöds fullt ut — det är det vanliga sättet struct-literaler skrivs i riktig kod idag. typedef-alias löses upp, och enum-värden kommer ut som antingen sitt numeriska värde eller symbolnamn beroende på kontext. union-typer serialiserar den aktiva memberen. Pointer members till NULL blir JSON null; annars expanderas det pekade värdet. Klistra in flera structs samtidigt och var och en blir en top-level key i outputen.

Så använder du det

Tre steg. Funkar likadant för en initializer på två rader som för en hel header med tjugo typedefs.

1

Klistra in din C (eller ladda exemplet)

Släpp din C som den är i den vänstra editorn. En struct-definition, en typedef, en designated initializer, flera structs, eller nästlade arrays — allt funkar. Klicka på Load Sample för att se ett realistiskt exempel först.

Du behöver inte ta bort #include-direktiv eller compiler-specifika attribut. Låt ISO C-syntaxen vara — parsern klarar det. Både C89 och modern (C11/C17/C23) funkar.

2

Tryck på Convert

Klicka på den gröna Convert-knappen. Verktyget läser C, går igenom varje struct, expanderar initializers och spottar ut JSON i ett svep. En loading indicator visas medan det körs.

3

Kopiera JSON

Den högra panelen fylls med indenterad JSON. Kopiera in den i din HTTP-klient, din embedded firmware-config, en test fixture eller ett README. Det är hela loopen — inget byggsteg.

När det verkligen räddar

Embedded config och firmware

Du har en device config-struct i C och behöver en JSON-version till en REST endpoint eller ett provisioning-verktyg. Klistra in structen, ta JSON, shippa.

API request-payloads

En C-service som wrappar ett third-party API. Klistra in request-structen, få JSON du kan testa med curl innan du drar in cJSON i produktion.

Unit test fixtures

Gör om designated initializers från dina unit tests till JSON seed files för integration tests eller golden-file-jämförelser.

Docs som matchar koden

Generera JSON-exempel för ett README eller protokolldokument direkt från dina riktiga structs, så att dokumentationen håller sig i synk med header-filen.

Vanliga frågor

Måste jag ha cJSON eller Jansson installerat?

Nej. Verktyget körs server-side och kompilerar inte din kod — du får JSON utan att dra in ett serialization-bibliotek. Vill du ha ett runtime-alternativ är cJSON det vanliga valet; Jansson är också bra.

Förstår det designated initializers och typedefs?

Ja. C99 designated initializers (.field = value) stöds fullt ut, och typedef-alias löses upp till den underliggande structen. Nästlade designated initializers expanderar på samma sätt som en kompilator skulle layouta dem.

Hur är det med arrays, pointers och NULL?

Fixed-size arrays blir JSON arrays med rätt antal element. Pointer members som är NULL blir JSON null; annars expanderas det pekade värdet. Arrays av structs funkar likadant — varje element är ett nästlat JSON object.

Hur hanteras enums och unions?

enum-värden kommer ut antingen som symbolnamn eller som numeriskt värde beroende på kontext. union-typer serialiserar den just nu aktiva memberen. Bitfields (unsigned flags : 4) blir numbers.

Sparas min kod?

Din kod skickas till backend för konvertering och sparas inte — vi loggar inte payloaden. Om koden är riktigt känslig (embedded firmware med secrets, interna protokolldetaljer), ta en titt på den innan du klistrar in.

Vad händer om C har macros eller compiler extensions?

Macros som expanderar till ett värde fungerar; function-like macros som gör riktig logik behandlas som opaka och emitteras som null istället för att krascha allt. GCC- och MSVC-attribut (__attribute__, __declspec) tolereras och ignoreras.

Andra verktyg du kanske behöver

C till JSON är bara en pusselbit. De här passar bra ihop: