Preskočiť na obsah

JSON na Dart triedu

Konvertuj JSON vzorku na Dart triedu s fromJson, toJson a vnorými modelmi.

Vstup
Výstup

JSON na Dart triedu

Vlož JSON vzorku a tento nástroj odvodzuje tvar dát a vygeneruje zodpovedajúcu Dart triedu — také, akú by si inak musel ručne napísať pre Flutter model. Vnorené objekty sa stanú vlastnými triedami, polia typu `List<...>` sa stanú typovanými poľami, a každá trieda prichádza s pomenovaným konštruktorom, `fromJson` factory a `toJson` metódou, takže výsledok možno priamo vložiť do Flutter alebo Dart projektu.

Možnosti ovládajú štýl generovaného kódu. "Názov triedy" nastaví koreňovú triedu, vnorené triedy sú pomenované podľa JSON kľúča, ktorý ich predstavil. "Bezpečnosť voči null s povinnými poľami" označuje polia, ktoré sú prítomné v každej vzorke ako `required` s typom bez null, a polia, ktorá sú niekedy chýbajúce alebo null, ako nullable a voliteľné — vypnite ho, aby bolo každé pole nullable, čo je tolerantnejšie voči nekonzistentným API odpoveďiam. "json_serializable anotácie" prepína z ručne napísaných `fromJson`/`toJson` telies na `@JsonSerializable()` a `@JsonKey` anotácie, ktoré delegujú na generovaný `.g.dart` súbor časti pre projekty, ktoré už tento balík a build_runner používajú. "Finálne polia" spôsobia, že trieda je nemenná, "Vygenerovať copyWith" pridá metódu na vytvorenie upravenej kópie bez mutácie pôvodnej, a "Vygenerovať == a hashCode" pridá rovnosť hodnôt, takže dve inštancie s rovnakými hodnotami polí sa porovnajú ako rovnaké. "Odsadenie" prepína generovaný kód medzi 2 a 4 medzerami.

Ked sa rovnaký tvar objektu opakuje — napríklad pole položiek, ktoré majú všetky rovnaké polia — nástroj znovupoužije jednu triedu namiesto generovania duplikátu pre každý výskyt, a pole chýbajúce iba z niektorých položiek v poli sa správne odvodí ako voliteľné namiesto povinného. JSON kľúče, ktoré nie sú platnými identifikátormi Dartu, používajú iné pomenovanie alebo sa zrazujú so kľúčovým slovom alebo generovaným názvom metódy (ako `copyWith` alebo `hashCode`), sa automaticky premenúvajú na strane Dartu, kým sa pôvodný kľúč zachováva na kódovanie a dekódovanie.

Všetko sa vykonáva lokálne vo vašom prehliadači: vzorka JSON sa nikdy nikde neuploaduje, čo je dôležité, ak obsahuje skutočné údaje používateľov alebo odpoveď na tvar interného API. Skopíruj triedu, stiahni si ju ako súbor .txt alebo pošli výstup späť do vstupu, aby si mohol ďalej konvertovať jednu vnorú časť.

Časté otázky

Ako sa spracovávajú vnorené objekty a polia?
Každý vnorený objekt sa stane vlastnou Dart triedou s názvom podľa poľa, ktoré ho zaviedlo, a pole objektov sa stane typovaným List<YourClass>. Ak sa rovnaký tvar objaví viac ako raz, nástroj znovupoužije jednu triedu namiesto generovania duplikátu pre každý výskyt.
Čo presne zmení "Bezpečnosť voči null s povinnými poľami"?
Keď je zapnuté, pole, ktoré nástroj vidí v každej vzorke, dostane typ bez null a `required` parameter konštruktora, pole, ktoré je niekedy chýbajúce alebo null, dostane nullable typ bez `required` kľúčového slova. Vypnutie ho spôsobí, že každé pole je nullable a voliteľné, čo je tolerantnejšie voči API, ktorých odpovede sa líšia.
Potrebujem balík json_serializable?
Iba ak zapneš možnosť "json_serializable anotácie", ktorá emituje @JsonSerializable()/@JsonKey a direktívu časti očakávajúcu generovaný `.g.dart` súbor z build_runner. Vypni ho a nástroj napíše jednoduchý, bezplatný fromJson/toJson bez závislostí namiesto toho.
Môže správne odvodiť typ numerického poľa?
Áno. Pole, ktoré je vždy celé číslo, sa stane int, ak ktorákoľvek vzorka obsahuje desatinnú čiarku, celé pole sa rozšíri na double, aby sa nepotratila žiadna hodnota.
Je moja JSON vzorka niekde uploadovaná?
Nie. Trieda sa vygeneruje úplne vo vašom prehliadači — vaša JSON vzorka nikdy neopustí vaše zariadenie.