Přeskočit na obsah

JSON na třídu Dart

Převeď JSON vzorek na třídu Dart s fromJson, toJson a vnořenými modely.

Vstup
Výstup

JSON na třídu Dart

Vložte vzorek JSON a tento nástroj odvodí tvar dat a vygeneruje odpovídající třídu Dart — takový, jaký byste jinak musel ručně napsat pro Flutter model. Vnořené objekty se stanou vlastními třídami, pole typu `List<...>` se stanou typovanými poli a každá třída přichází s pojmenovaným konstruktorem, `fromJson` factory a `toJson` metodou, takže výsledek lze přímo vložit do Flutter nebo Dart projektu.

Možnosti řídí styl generovaného kódu. "Název třídy" nastavuje třídu kořene, vnořené třídy jsou pojmenovány podle klíče JSON, který je zavádí. "Null-bezpečnost s povinných pole" označuje pole, která jsou přítomna v každém vzorku jako `required` s typem bez null, a pole, která jsou někdy chybějící nebo null, jako nullable a volitelná — vypněte ji, aby každé pole bylo nullable, což je tolerantnější vůči nekonzistentním odpovědím API. "json_serializable anotace" přepíná z ručně psaných těl `fromJson`/`toJson` na `@JsonSerializable()` a `@JsonKey` anotace, které delegují na vygenerovaný `.g.dart` část souboru pro projekty, které již tento balíček a build_runner používají. "Finální pole" činí třídu neměnnou, "Vygenerovat copyWith" přidá metodu pro vytvoření upravené kopie bez mutace originálu a "Vygenerovat == a hashCode" přidá rovnost hodnot, takže dvě instance se stejnými hodnotami polí se porovnávají jako rovné. "Odsazení" přepíná generovaný kód mezi 2 a 4 mezerami.

Když se stejný tvar objektu opakuje — například pole položek, které všechny mají stejná pole — nástroj znovu použije jednu třídu místo generování duplikátu pro každý výskyt a pole chybějící pouze z některých položek v poli se správně odvodí jako volitelné spíše než povinné. JSON klíče, které nejsou platnými identifikátory Dartu, používají jiné pojmenování nebo kolidují s klíčovým slovem nebo vygenerovaným názvem metody (jako `copyWith` nebo `hashCode`), se automaticky přejmenují na straně Dartu, zatímco původní klíč se zachovává pro kódování a dekódování.

Všechno se spouští místně ve vašem prohlížeči: vzorek JSON se nikdy nikam nenahraje, což je důležité, pokud obsahuje skutečná uživatelská data nebo odpověď na tvar interního API. Zkopírujte třídu, stáhněte si ji jako soubor .txt nebo odešlete výstup zpět do vstupu, abyste mohli dále konvertovat jeden vnořený kus.

Časté dotazy

Jak se zpracovávají vnořené objekty a pole?
Každý vnořený objekt se stane vlastní třídou Dart pojmenovanou podle pole, které ho zavádí, a pole objektů se stane typovaným List<YourClass>. Pokud se stejný tvar objeví více než jednou, nástroj znovu použije jednu třídu místo generování duplikátu pro každý výskyt.
Co přesně změní "Null-bezpečnost s povinných pole"?
Když je zapnuto, pole, které nástroj vidí v každém vzorku, získá typ bez null a `required` parametr konstruktoru, pole, které je někdy chybějící nebo null, získá nullable typ bez `required` klíčového slova. Vypnutí to spůsobí, že každé pole je nullable a volitelné, což je tolerantnější vůči API, jejichž odpovědi se liší.
Potřebuji balík json_serializable?
Pouze pokud zapnete možnost "json_serializable anotace", která emituje @JsonSerializable()/@JsonKey a směrnici části očekávající vygenerovaný `.g.dart` soubor z build_runner. Vypněte ji a nástroj místo toho napíše prosté, bezplatné fromJson/toJson bez závislostí.
Může správně odvodit typ numerického pole?
Ano. Pole, které je vždy celé číslo, se stane int; pokud má některý vzorek desítkový bod, celé pole se rozšíří na double, aby nebyla ztracena žádná hodnota.
Je můj vzorek JSON někam nahraný?
Ne. Třída se vygeneruje zcela ve vašem prohlížeči — váš vzorek JSON nikdy neopustí vaše zařízení.