Preskoči na sadržaj
100% lokalno

JSON u Dart klasu

Pretvori JSON uzorak u Dart klasu sa fromJson, toJson i ugniježđenim modelima.

Unos
Rezultat

JSON u Dart klasu

Zalijepite primjer JSON i ovaj alat zaključuje oblik podataka i generiše odgovarajuću Dart klasu — onu koju biste inače rukom napisali za Flutter model. Ugniježđeni objekti postaju vlastite klase, nizu postaju tipizirana `List<...>` polja, a svaka klasa dolazi sa imenovanim konstruktorom, `fromJson` fabričnom metodom i `toJson` metodom, tako da rezultat ide direktno u Flutter ili Dart projekat.

Opcije kontrolišu stil generivanog koda. "Naziv klase" postavlja koren klasu; ugniježđene klase se nazivaju prema JSON ključu koji ih je uveo. "Null sigurnost sa obaveznim poljima" označava polja koja su prisutna u svakom uzorku kao `required` sa ne-nullable tipom, i polja koja ponekad nedostaju ili su null kao nullable i opcionalna — isključite da biste sva polja učinili nullable umjesto toga, što je tolerantnije prema nekonzistentnim API odgovorima. "json_serializable anotacije" prebacuje sa rukom napisanih `fromJson`/`toJson` tela na `@JsonSerializable()` i `@JsonKey` anotacije koje delegiraju generivanoj `.g.dart` part datoteci, za projekte koji već koriste taj paket i build_runner. "Konačna polja" čini klasu nepromenljivom; "Generiraj copyWith" dodaje metodu za pravljenje modifikovane kopije bez mutiranja originala, i "Generiraj == i hashCode" dodaje jednakost vrednosti tako da dve instance sa istim vrednostima polja budu jednake. "Uvlaka" prebacuje generirani kod između 2 i 4 razmaka.

Kada se ista forma objekta ponavlja — niz stavki koje sve imaju ista polja, na primer — alat ponovno koristi jednu klasu umesto da generiše duplikat za svaki pojavu, i polje koje nedostaje samo nekim stavkama u nizu je ispravno zaključeno kao opcionalno umesto obaveznog. JSON ključevi koji nisu važeći Dart identifikatori, koriste drugačije razvode, ili se sudaraju sa ključnom reči ili generivanom nazivom metode (kao `copyWith` ili `hashCode`) se automatski preimenovu na Dart strani dok se originalni ključ čuva za kodiranje i dekodiranje.

Sve se izvršava lokalno u vašem pregledniku: nikada se nijedan JSON uzorak nigde učitava, što je važno ako sadrži prave podatke korisnika ili odgovor oblika internog API-ja. Kopirajte klasu, preuzimite je kao .txt datoteku, ili pošaljite rezultat nazad u unos da konvertujete jedan ugniježđeni deo dalje.

FAQ

Kako se rukuju ugniježđeni objekti i nizovi?
Svaki ugniježđeni objekat postaje vlastita Dart klasa sa nazivom prema polju koje ga je uvelo, i niz objekata postaje tipiziran List<VašaKlasa>. Ako se isti oblik pojavi više puta, alat ponovno koristi jednu klasu umesto da generiše duplikat za svaki pojavu.
Šta tačno menja "Null sigurnost sa obaveznim poljima"?
Kada je uključeno, polje koje alat vidi u svakom uzorku dobija ne-nullable tip i obavezan parametar konstruktora; polje koje ponekad nedostaje ili je null dobija nullable tip bez `required` ključne reči. Isključivanjem čini sve polje nullable i opcionalno, što je tolerantnije prema API-jima čiji se odgovori razlikuju.
Trebam li json_serializable paket?
Samo ako uključite opciju "json_serializable anotacije", koja emituje @JsonSerializable()/@JsonKey i part direktivu koja očekuje generianu .g.dart datoteku iz build_runner-a. Isključite je i alat piše obične, bez zavisnosti fromJson/toJson metode umesto toga.
Može li tačno zaključiti tip numeričkog polja?
Da. Polje koje je uvek ceo broj postaje int; ako neka vrednost u uzorku ima decimalnu tačku, celo polje se proširuje na double kako ni jedan vrednost ne bi bila skraćena.
Je li moj JSON učitan negde?
Ne. Klasa se generiše u potpunosti u vašem pregledniku — vaš JSON uzorak nikada ne napušta vaš uređaj.