Hoppa till innehåll
100% lokalt

JSON till Dart-klass

Omvandla ett JSON-exempel till en Dart-klass med fromJson, toJson och kapslade modeller.

Inmatning
Utmatning

JSON till Dart-klass

Klistra in ett JSON-exempel, och detta verktyg härleder dataformatet och genererar en motsvarande Dart-klass — precis vad du annars skulle skriva för hand för en Flutter-modell. Kapslade objekt blir egna klasser, arrayer blir typade `List<...>`-fält, och varje klass levereras med en namngiven konstruktor, en `fromJson`-factory och en `toJson`-metod som passar direkt in i ett Flutter- eller Dart-projekt.

Alternativen styr stilen för den genererade koden. "Klassnamn" ställer in rotklassen; kapslade klasser namnges efter JSON-nyckeln som introducerade dem. "Null-säkerhet med obligatoriska fält" markerar fält som finns i varje exempel som `required` med en icke-null typ, och fält som ibland saknas eller är null som nullable och valfria — stäng av detta för att göra alla fält nullable i stället, vilket är mer tolerant mot inkonsistenta API-svar. "json_serializable-anteckningar" byter från handskrivna `fromJson`/`toJson`-implementeringar till `@JsonSerializable()`- och `@JsonKey`-anteckningar som delegerar till en genererad `.g.dart`-fil, för projekt som redan använder det paketet och build_runner. "Konstanta fält" gör klassen oförändring; "Generera copyWith" lägger till en metod för att skapa en modifierad kopia utan att muttera originalet, och "Generera == och hashCode" lägger till värdelikhet så att två instanser med samma fältvärden jämförs lika. "Indrag" byter den genererade koden mellan 2 och 4 mellanslag.

När samma objektform upprepas — till exempel en array med objekt som alla har samma fält — återanvänder verktyget en klass i stället för att generera en duplikat för varje förekomst, och ett fält som endast saknas från vissa poster i en array härleds korrekt som valfritt snarare än obligatoriskt. JSON-nycklar som inte är giltiga Dart-identifierare, använder annan skiftläge eller kolliderar med ett nyckelord eller ett genererat metodnamn (som `copyWith` eller `hashCode`) omnamns automatiskt på Dart-sidan medan den ursprungliga nyckeln bevaras för kodning och avkodning.

Allt körs lokalt i din webbläsare: ditt JSON-exempel överförs aldrig någonstans, vilket är viktigt om det innehåller verkliga användardata eller en intern API:s svarsform. Kopiera klassen, ladda ned den som en .txt-fil, eller skicka tillbaka utmatningen till inmatningen för att konvertera ytterligare en kapslad del.

FAQ

Hur hanteras kapslade objekt och arrayer?
Varje kapslat objekt blir sin egen Dart-klass namngiven efter fältet som introducerade det, och en array med objekt blir en typerad List<YourClass>. Om samma form visas mer än en gång återanvänder verktyget en enda klass i stället för att generera en duplikat för varje förekomst.
Vad förändras med "Null-säkerhet med obligatoriska fält"?
När den är aktiverad får ett fält som verktyget ser i varje exempel en icke-null typ och en `required`-konstruktorparameter; ett fält som ibland saknas eller är null får en nullable typ utan `required`-nyckelord. Om du stänger av det blir varje fält nullable och valfritt, vilket är mer tolerant mot API:er med varierande svar.
Behöver jag json_serializable-paketet?
Endast om du aktiverar alternativet "json_serializable-anteckningar", som skickar @JsonSerializable()/@JsonKey och en part-direktiv som förväntar en genererad .g.dart-fil från build_runner. Lämna den inaktiverad så skriver verktyget enkla, beroende-fria fromJson/toJson-metoder i stället.
Kan det härleda typen för ett numeriskt fält korrekt?
Ja. Ett fält som alltid är ett heltal blir int; om något exempelvärde har en decimal punkt, utökas hela fältet till double så ingen värde skulle avkortas.
Överförs mitt JSON någonstans?
Nej. Klassen genereras helt i din webbläsare — ditt JSON-exempel lämnar aldrig din enhet.