C do JSON Converter
Wklej structy albo initializery C. Dostań czysty JSON.
Co ten tool robi
Jeśli kiedyś potrzebowałeś JSON payloadu, który odzwierciedla strukturę z C — do testu serwisu zbudowanego gcc, do configu embedded device'a, albo do kawałka dokumentacji — wiesz, jak to zwykle wygląda: wciągnąć cJSON, napisać glue code per field, rebuildować, debugować. Wklej C tutaj i dostaniesz poprawny JSON bez dotykania Makefile'a. Ogarnia pojedynczy designated initializer, header z kilkoma struct-ami, albo coś z zagnieżdżonymi typami i tablicami — ten sam wynik: czysty dokument JSON z zachowanym każdym fieldem.
Converter rozumie, jak wartości C faktycznie się serializują. int, long, size_t, float i double lądują jako JSON numbers. Tablice char i string literale stają się JSON stringami. bool z stdbool.h staje się true/false. Tablice o stałym rozmiarze (int items[3]) stają się JSON arrayami z prawidłową długością. Zagnieżdżone struct-y — np. Address w Order — rozwijają się w zagnieżdżone JSON objecty. Zachowanie trzyma się referencji języka C.
Designated initializery z C99 (.field = value) są w pełni wspierane — tak się dzisiaj normalnie pisze struct literale w realnym kodzie. Aliasy typedef są rozwiązywane, a wartości enum wychodzą albo jako wartość liczbowa, albo jako nazwa symbolu, w zależności od kontekstu. Typy union serializują aktywny member. Pointery wskazujące na NULL stają się JSON null; w przeciwnym wypadku wskazywana wartość jest rozwijana. Wklej kilka struct-ów naraz i każdy staje się top-level keyem w outpucie.
Jak tego używać
Trzy kroki. Działa tak samo na dwuliniowy initializer, jak na pełny header z dwudziestoma typedef-ami.
Wklej swoje C (albo załaduj przykład)
Wrzuć swoje C bez zmian do lewego edytora. Definicja struct, typedef, designated initializer, kilka struct-ów, albo zagnieżdżone tablice — wszystko gra. Kliknij Load Sample, żeby najpierw zobaczyć realistyczny przykład.
Nie musisz usuwać dyrektyw #include ani atrybutów specyficznych dla kompilatora. Zostaw składnię ISO C w spokoju — parser to ogarnie. Zarówno C89, jak i nowoczesne C (C11/C17/C23) są okej.
Wciśnij Convert
Kliknij zielony przycisk Convert. Tool czyta C, przechodzi po każdym struct-cie, rozwija initializery i wypluwa JSON w jednym przebiegu. W trakcie widać wskaźnik ładowania.
Skopiuj JSON
Prawy panel wypełnia się wciętym JSON-em. Skopiuj go do swojego klienta HTTP, configu embedded firmware'u, fixture'a testowego albo README. To cały loop — żadnego kroku buildu.
Kiedy to naprawdę ratuje
Config embedded i firmware
Masz struct configu urządzenia w C i potrzebujesz wersji JSON do endpointu REST albo do toola do provisioningu. Wklej struct, weź JSON, wyślij.
Payloady requestów API
Serwis w C owijający zewnętrzne API. Wklej struct requestu, dostań JSON, którym możesz zatestować curl-em, zanim w produkcji podepniesz cJSON.
Fixturey do testów jednostkowych
Zamień designated initializery z twoich unit testów na pliki JSON seed do testów integracyjnych albo porównań golden-file.
Docsy, które zgadzają się z kodem
Generuj przykłady JSON do README albo dokumentu protokołu prosto z twoich realnych struct-ów, żeby dokumentacja siedziała w syncu z header file'em.
Częste pytania
Potrzebuję zainstalowanego cJSON albo Jansson?
Nie. Ten tool działa server-side i nie kompiluje twojego kodu — dostajesz JSON bez wciągania biblioteki do serializacji. Jeśli chcesz opcję w runtimie, cJSON to typowy wybór; Jansson też jest spoko.
Rozumie designated initializery i typedef-y?
Tak. Designated initializery z C99 (.field = value) są w pełni wspierane, a aliasy typedef są rozwiązywane do struktury pod spodem. Zagnieżdżone designated initializery rozwijają się tak samo, jak by je ułożył kompilator.
A co z tablicami, pointerami i NULL-em?
Tablice o stałym rozmiarze stają się JSON arrayami z właściwą liczbą elementów. Pointer membery, które są NULL, stają się JSON null; w przeciwnym wypadku wskazywana wartość jest rozwijana. Tablice struct-ów działają tak samo — każdy element to zagnieżdżony JSON object.
Jak obsługiwane są enumy i uniony?
Wartości enum wychodzą jako nazwa symbolu albo wartość liczbowa, w zależności od kontekstu. Typy union serializują aktualnie aktywny member. Bitfieldy (unsigned flags : 4) stają się liczbami.
Czy mój kod jest gdzieś zapisywany?
Twój kod idzie na backend do konwersji i nie jest trwale przechowywany — nie logujemy payloadu. Jeśli kod jest naprawdę wrażliwy (embedded firmware z sekretami, detale wewnętrznego protokołu), prześwietl go, zanim wkleisz.
A jeśli w C są makra albo rozszerzenia kompilatora?
Makra, które rozwijają się do wartości, działają; makra function-like, które robią prawdziwą logikę, są traktowane jako nieprzejrzyste i emitowane jako null, zamiast wywalać cały proces. Atrybuty GCC i MSVC (__attribute__, __declspec) są tolerowane i ignorowane.
Inne toole, które mogą się przydać
C do JSON to tylko kawałek układanki. Te pasują do tego dobrze: