C till JSON Converter
Klistra in C-structs eller initializers. Få tillbaka ren JSON.
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.
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.
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.
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: