C til JSON Converter
Indsæt C-structs eller initializers. Få ren JSON tilbage.
Hvad dette værktøj gør
Hvis du nogensinde har haft brug for en JSON-payload, der spejler en C-struct — til en test af en service bygget med gcc, en config til en embedded device, eller et stykke dokumentation — ved du hvordan det normalt kører: træk cJSON ind, skriv glue code per field, genbuild, debug. Indsæt C'en her og få gyldig JSON tilbage uden at røre en Makefile. Den klarer en enkelt designated initializer, en header med flere structs, eller noget med nestede typer og arrays — samme resultat: et rent JSON-dokument hvor hvert field er bevaret.
Converteren forstår hvordan C-værdier faktisk serializer. int, long, size_t, float og double bliver alle JSON numbers. char-arrays og string literals bliver JSON strings. bool fra stdbool.h bliver true/false. Faste arrays (int items[3]) bliver JSON arrays med den rigtige længde. Nestede structs — en Address inde i en Order, for eksempel — folder ud til nestede JSON objects. Opførslen følger C language reference.
C99 designated initializers (.field = value) er fuldt understøttet — det er den normale måde struct-literaler bliver skrevet i rigtig kode i dag. typedef-aliases bliver løst, og enum-værdier kommer ud som enten deres numeriske værdi eller symbolnavn afhængigt af konteksten. union-typer serializer den aktive member. Pointer members til NULL bliver JSON null; ellers bliver den pegede værdi foldet ud. Indsæt flere structs på én gang, og hver bliver en top-level key i outputtet.
Sådan bruger du det
Tre trin. Virker ens for en to-linjers initializer som for en hel header med tyve typedefs.
Indsæt din C (eller indlæs eksemplet)
Smid din C som den er i editoren til venstre. En struct-definition, en typedef, en designated initializer, flere structs, eller nestede arrays — det hele er fint. Klik på Load Sample for at se et realistisk eksempel først.
Du behøver ikke fjerne #include-direktiver eller compiler-specifikke attributter. Lad ISO C-syntaksen stå — parseren klarer det. Både C89 og moderne (C11/C17/C23) virker.
Tryk Convert
Klik på den grønne Convert-knap. Værktøjet læser C'en, gennemgår hver struct, folder initializers ud og spytter JSON'en ud i én pass. En loading indicator vises mens det kører.
Kopier JSON'en
Panelet til højre fyldes med indrykket JSON. Kopier det ind i din HTTP-klient, embedded firmware-config, test fixture, eller README. Det er hele loopen — ingen build step.
Hvornår det virkelig er nyttigt
Embedded config og firmware
Du har en device config-struct i C og mangler en JSON-version til et REST endpoint eller et provisioning-værktøj. Indsæt structen, tag JSON'en, ship.
API request-payloads
En C-service der wrapper et third-party API. Indsæt request-structen, få JSON du kan teste med curl, før du kobler cJSON på i produktion.
Unit test fixtures
Lav designated initializers fra dine unit tests om til JSON seed files til integration tests eller golden-file-sammenligninger.
Docs der matcher koden
Generer JSON-eksempler til et README eller et protokoldokument direkte fra dine rigtige structs, så dokumentationen holder sig i sync med header-filen.
Almindelige spørgsmål
Skal jeg have cJSON eller Jansson installeret?
Nej. Værktøjet kører server-side og kompilerer ikke din kode — du får JSON uden at trække et serialization library ind. Vil du have en runtime-mulighed er cJSON det sædvanlige valg; Jansson er også godt.
Forstår det designated initializers og typedefs?
Ja. C99 designated initializers (.field = value) er fuldt understøttet, og typedef-aliases bliver løst tilbage til den underliggende struct. Nestede designated initializers folder ud på samme måde som en compiler ville layoute dem.
Hvad med arrays, pointers og NULL?
Fixed-size arrays bliver JSON arrays med det rigtige antal elementer. Pointer members der er NULL, bliver JSON null; ellers bliver den pegede værdi foldet ud. Arrays af structs virker ens — hvert element er et nestet JSON object.
Hvordan håndteres enums og unions?
enum-værdier kommer ud som enten symbolnavn eller numerisk værdi afhængigt af konteksten. union-typer serializer den aktuelt aktive member. Bitfields (unsigned flags : 4) bliver numbers.
Bliver min kode gemt?
Din kode bliver sendt til backenden til konvertering og bliver ikke persisteret — vi logger ikke payloaden. Hvis koden er virkelig følsom (embedded firmware med secrets, interne protokoldetaljer), så giv den et review inden du indsætter.
Hvad hvis C'en har macros eller compiler extensions?
Macros der folder ud til en værdi, virker; function-like macros der laver rigtig logik, bliver behandlet som opake og udsendt som null i stedet for at crashe det hele. GCC- og MSVC-attributter (__attribute__, __declspec) bliver tolereret og ignoreret.
Andre værktøjer du måske får brug for
C til JSON er bare én puslespilsbrik. Disse passer godt sammen med den: