JSON-naar-Dart-converter

Stap 1 / 333%

Genereer Dart-modelklassen zonder afhankelijkheden uit een JSON-object of een reeks voorbeeldobjecten. De converter voegt alle onderzochte array-items samen, maakt geneste klassen, behoudt de oorspronkelijke JSON-sleutels en leidt null-safe veldtypen af met een factory-constructor fromJson. Voeg toJson-methoden toe als je uitvoer nodig hebt die met jsonEncode werkt. Het voorbeeld en de gegenereerde code blijven in deze browser en worden nooit geüpload of in de URL geplaatst.

Hoe het werkt

  1. 1

    Plak een representatief voorbeeld

    Gebruik één JSON-object of een array met objecten. Meerdere items maken ontbrekende, nullable en verschillend getypeerde velden zichtbaar.

  2. 2

    Kies de Dart-opties

    Geef de hoofdklasse een naam, maak desgewenst alle velden nullable en kies of je toJson-methoden wilt toevoegen.

  3. 3

    Controleer en exporteer

    Bekijk de afgeleide klassen en kopieer de code of download lokaal een bestand models.dart.

Zo wordt JSON een null-safe Dart-model

De officiële documentatie voor dart:convert legt uit dat jsonDecode() JSON-compatibele waarden oplevert, zoals getallen, tekenreeksen, booleans, null, lijsten en maps met tekenreeksen als sleutel. Een modelklasse kan niet rechtstreeks als JSON worden gecodeerd, maar jsonEncode() kan de methode toJson() aanroepen. Deze converter genereert dat handmatige serialisatiepatroon zonder json_serializable-annotaties of pakketafhankelijkheden.

Stel dat een voorbeeld een gebruiker met een genest adres bevat. De gegenereerde klasse User heeft final-velden en een constructor met benoemde parameters. User.fromJson(Map<String, Object?> json) cast scalaire waarden en roept UserAddress.fromJson() aan voor het geneste object. Als address in een van de onderzochte objecten ontbreekt of null is, wordt het type UserAddress? en controleert de factory de waarde voordat het object wordt gemaakt. Als toJson is ingeschakeld, worden geneste modellen recursief omgezet in maps die jsonEncode() accepteert.

Waarneming in JSON Gegenereerd Dart-type
Geheel getal int
Decimaal getal double
Gehele en decimale voorbeelden num
Tekst String
Boolean bool
Genest object Gegenereerde modelklasse
Consistente array List<T>
Lege of incompatibele geneste array List<Object?>
Alleen null of conflicterende waarden Object?

De converter onderzoekt elk object in een hoofdarray en vertrouwt niet alleen op het eerste item. Een veld wordt nullable wanneer het in één item ontbreekt of expliciet null is. Je kunt ook alle velden nullable maken wanneer de echte API minder voorspelbaar is dan het voorbeeld. De Dart-handleiding voor null safety vermeldt dat typen standaard niet nullable zijn en ? nodig hebben om null te accepteren.

Identifiers en grenzen van de type-inferentie

JSON-sleutels hoeven geen geldige Dart-members te zijn. Leestekens worden verwijderd, woorden worden omgezet naar lowerCamelCase, gereserveerde woorden krijgen een veilige suffix en botsingen krijgen deterministische numerieke suffixen. De oorspronkelijke sleutel blijft ongewijzigd in json['original-key'] en in de map van toJson(). Namen van geneste klassen gebruiken het volledige pad, zodat twee losstaande adresobjecten niet onbedoeld één klasse worden.

Eén voorbeeld bewijst geen API-contract. JSON-tekenreeksen zijn niet automatisch datums, UUID’s of enums en een lege array geeft geen elementtype prijs. Dubbele membernamen zijn evenmin betrouwbaar heen en terug te converteren, omdat JSON-parsers vaak de laatste waarde behouden. Vergelijk de gegenereerde modellen vóór productiegebruik met de API-documentatie of het schema. Limieten voor invoer, diepte, afgeleide declaraties en uitvoer houden het werk in de browser beheersbaar.

Veelgestelde vragen

Nee. Parseren, inferentie, codegeneratie, kopiëren en downloaden gebeuren in de browser. De JSON en Dart-code worden niet naar onze servers verzonden en komen niet in de URL terecht.

Ja. Flutter gebruikt Dart, dus deze klassen zonder afhankelijkheden zijn bruikbaar in een Flutter-project. Vergelijk de afgeleide typen eerst met het echte API-contract.

Nee. Het genereert handmatige fromJson-methoden en optionele toJson-methoden, zonder pakket of build_runner.

Een veld dat als null of ontbrekend wordt waargenomen, wordt nullable. Je kunt alle velden nullable maken als het voorbeeld niet representatief is.

Nee. Het resultaat weerspiegelt alleen de waargenomen waarden. Gebruik meerdere voorbeeldobjecten en vergelijk het resultaat met het schema of de documentatie van de aanbieder.

Gerelateerde tools

Tool beschikbaar in andere talen