Füg links C ein und klick auf "Convert" — wir machen JSON drausC Code einfügen

Was dieses Tool macht

Wenn du schon mal einen JSON Payload gebraucht hast, der einen C struct spiegelt — für einen Test von einem Service, der mit gcc gebaut ist, eine Config für ein Embedded Device, oder ein Stück Doku — kennst du den Ablauf: cJSON reinziehen, das Glue-Code pro Feld schreiben, rebuilden, debuggen. Füg das C hier ein und bekomm valides JSON zurück, ohne ein Makefile anzufassen. Egal ob ein einzelner designated initializer, ein Header mit mehreren structs, oder was mit nested Types und Arrays — gleiches Ergebnis: ein sauberes JSON Dokument, in dem jedes Field erhalten ist.

Der Converter versteht, wie C-Werte tatsächlich serialisiert werden. int, long, size_t, float und double werden alle JSON Numbers. char Arrays und String-Literale werden JSON Strings. bool aus stdbool.h wird true/false. Feste Arrays (int items[3]) werden JSON Arrays mit der richtigen Länge. Nested structs — z. B. ein Address in einem Order — klappen sich in nested JSON Objects auf. Das Verhalten folgt der C Language Reference.

C99 designated initializers (.field = value) werden voll unterstützt — das ist heute die übliche Schreibweise für struct-Literale in echtem Code. typedef Aliases werden aufgelöst, und enum Werte kommen je nach Kontext entweder als numerischer Wert oder als Symbolname raus. union Types serialisieren das aktive Member. Pointer-Members auf NULL werden JSON null; sonst wird der gezeigte Wert expandiert. Füg mehrere structs auf einmal ein und jeder wird ein top-level Key im Output.

So benutzt du es

Drei Schritte. Funktioniert gleich für einen Zwei-Zeiler-Initializer wie für einen ganzen Header mit zwanzig typedefs.

1

Füg dein C ein (oder lad das Sample)

Kipp dein C unverändert in den linken Editor. Eine struct Definition, ein typedef, ein designated initializer, mehrere structs oder nested Arrays — alles okay. Klick auf Load Sample, um zuerst ein realistisches Beispiel zu sehen.

Du musst #include Directives oder compilerspezifische Attribute nicht entfernen. Lass die ISO C Syntax so stehen — der Parser kommt damit klar. C89 und modernes C (C11/C17/C23) funktionieren beide.

2

Drück Convert

Klick den grünen Convert Button. Das Tool liest das C, läuft jeden struct durch, expandiert die Initializers und spuckt das JSON in einem Durchgang raus. Während es läuft, siehst du einen Loading Indicator.

3

Kopier das JSON

Das rechte Panel füllt sich mit indentiertem JSON. Kopier es in deinen HTTP Client, die Config vom Embedded Firmware, eine Test Fixture oder ein README. Das ist der ganze Loop — kein Build Step.

Wann das wirklich hilft

Embedded Config & Firmware

Du hast einen Device Config struct in C und brauchst eine JSON Version für einen REST Endpoint oder ein Provisioning Tool. Füg den struct ein, nimm das JSON, ship.

API Request Payloads

Ein C Service, der eine Third-Party API wrapped. Füg den Request struct ein, bekomm JSON, das du mit curl testen kannst, bevor du cJSON in Production einbindest.

Unit Test Fixtures

Mach aus den designated initializers deiner Unit Tests JSON Seed Files für Integration Tests oder Golden-File Vergleiche.

Docs, die zum Code passen

Generier JSON Beispiele für ein README oder Protokoll-Doku direkt aus deinen echten structs — dann bleibt die Doku in sync mit dem Header File.

Häufige Fragen

Muss ich cJSON oder Jansson installiert haben?

Nein. Das Tool läuft serverseitig und kompiliert deinen Code nicht — du kriegst JSON, ohne eine Serialization Library reinzuziehen. Wenn du eine Runtime Option willst, ist cJSON die übliche Wahl; Jansson ist auch gut.

Versteht es designated initializers und typedefs?

Ja. C99 designated initializers (.field = value) werden voll unterstützt, und typedef Aliases werden zurück zum darunterliegenden struct aufgelöst. Nested designated initializers expandieren genauso, wie ein Compiler sie layouten würde.

Was ist mit Arrays, Pointern und NULL?

Fixed-Size Arrays werden JSON Arrays mit der richtigen Anzahl Elemente. Pointer-Members, die NULL sind, werden JSON null; sonst wird der gezeigte Wert expandiert. Arrays von structs laufen gleich — jedes Element ist ein nested JSON Object.

Wie werden enums und unions gehandhabt?

enum Werte kommen je nach Kontext entweder als Symbolname oder als numerischer Wert raus. union Types serialisieren das gerade aktive Member. Bitfields (unsigned flags : 4) werden Numbers.

Wird mein Code gespeichert?

Dein Code geht an das Backend zur Konvertierung und wird nicht persistiert — wir loggen den Payload nicht. Wenn der Code wirklich sensitiv ist (Embedded Firmware mit Secrets, interne Protokoll-Details), guck ihn vor dem Einfügen kurz durch.

Was, wenn das C Macros oder Compiler Extensions hat?

Macros, die zu einem Wert expandieren, funktionieren; function-like Macros, die echte Logik machen, werden als opaque behandelt und als null ausgegeben, statt zu crashen. GCC und MSVC Attributes (__attribute__, __declspec) werden toleriert und ignoriert.

Andere Tools, die du brauchen könntest

C zu JSON ist nur ein Teil vom Puzzle. Die hier passen gut dazu: