Sări la conținut
Complet local

JSON la clasă Dart

Transformă o mostră JSON într-o clasă Dart cu fromJson, toJson și modele imbricate.

Intrare
Ieșire

JSON la clasă Dart

Lipește o mostră JSON și acest instrument deduce forma datelor și generează o clasă Dart corespunzătoare — felul pe care l-ai scrie manual pentru un model Flutter. Obiectele imbricate devin propriile lor clase, matricele devin câmpuri `List<...>` tipizate, și fiecare clasă vine cu un constructor numit, o fabrică `fromJson` și o metodă `toJson`, deci rezultatul se integrează direct într-un proiect Flutter sau Dart.

Opțiunile controlează stilul codului generat. "Numele clasei" stabilește clasa rădăcină; clasele imbricate sunt numite după cheia JSON care le-a introdus. "Siguranța nulă cu câmpuri obligatorii" marchează câmpurile prezente în fiecare mostră ca `required` cu un tip non-nul, și câmpurile care uneori lipsesc sau sunt nule ca anulabile și opționale — dezactivează pentru a face toate câmpurile anulabile, ceea ce este mai tolerant la răspunsuri API inconsistente. "Adnotări json_serializable" trece de la corpurile `fromJson`/`toJson` scrise manual la adnotări `@JsonSerializable()` și `@JsonKey` care delegă către un fișier parte `.g.dart` generat, pentru proiecte care folosesc deja acel pachet și build_runner. "Câmpuri finale" face clasa imuabilă; "Generează copyWith" adaugă o metodă pentru a crea o copie modificată fără a muta originalul, și "Generează == și hashCode" adaugă egalitate de valoare, deci două instanțe cu aceleași valori de câmp se compară ca egale. "Indentare" comută codul generat între 2 și 4 spații.

Când aceeași formă de obiect se repetă — o matrice de articole care au toate aceleași câmpuri, de exemplu — instrumentul refolosește o singură clasă în loc să genereze una duplicată pentru fiecare apariție, și un câmp care lipsește din unele intrări dintr-o matrice este corect dedus ca opțional în loc de obligatoriu. Cheile JSON care nu sunt identificatori Dart valizi, folosesc diferite majuscule, sau se ciocnesc cu un cuvânt cheie sau un nume de metodă generat (ca `copyWith` sau `hashCode`) sunt redenumite automat pe partea Dart în timp ce cheia originală este păstrată pentru codificare și decodificare.

Totul se execută local în browser-ul tău: nicio mostră JSON nu este niciodată încărcată oriunde, ceea ce contează dacă conține date reale ale utilizatorului sau forma de răspuns a unui API intern. Copiază clasa, descarcă-o ca fișier .txt, sau trimite rezultatul înapoi în intrare pentru a converti o bucată imbricată mai departe.

FAQ

Cum sunt tratate obiectele imbricate și matricele?
Fiecare obiect imbricat devine propria sa clasă Dart numită după câmpul care o-a introdus, și o matrice de obiecte devine o List<YourClass> tipizată. Dacă aceeași formă apare mai mult de o dată, instrumentul refolosește o singură clasă în loc să o dubleze pentru fiecare apariție.
Ce se schimbă de fapt cu "Siguranța nulă cu câmpuri obligatorii"?
Când este activată, un câmp pe care instrumentul îl vede în fiecare mostră primește un tip non-nul și un parametru constructor `required`; un câmp care uneori lipsește sau este nul primește un tip anulabil fără cuvântul cheie `required`. Dezactivarea face toate câmpurile anulabile și opționale, ceea ce este mai tolerant la API-uri ale căror răspunsuri variază.
Am nevoie de pachetul json_serializable?
Doar dacă activezi opțiunea "Adnotări json_serializable", care emite `@JsonSerializable()`/`@JsonKey` și o directivă de parte așteptând un fișier `.g.dart` generat de build_runner. Dezactivează-o și instrumentul scrie metode `fromJson`/`toJson` simple, fără dependențe.
Poate deduce corect tipul unui câmp numeric?
Da. Un câmp care este întotdeauna un număr întreg devine `int`; dacă orice valoare de mostră are un punct zecimal, tot câmpul este mărit la `double` astfel încât nicio valoare să nu fie trunchiată.
JSON-ul meu este încărcat oriunde?
Nu. Clasa este generată complet în browser-ul tău — mostra ta JSON nu pleacă niciodată de pe dispozitivul tău.