JSON-naar-Dart-converter
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
Plak een representatief voorbeeld
Gebruik één JSON-object of een array met objecten. Meerdere items maken ontbrekende, nullable en verschillend getypeerde velden zichtbaar.
-
2
Kies de Dart-opties
Geef de hoofdklasse een naam, maak desgewenst alle velden nullable en kies of je toJson-methoden wilt toevoegen.
-
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
ASCII-tabelreferentie
Volledige ASCII-tabel van 0 tot 127 met decimale, hexadecimale, octale en binaire waarden en HTML-numerieke referentienotatie, inclusief control codes zoals NUL, LF en DEL.
HTML-tekenreferentie
Een doorzoekbare lijst met HTML-entiteiten, hun benoemde en numerieke codes, plus kopiëren met één klik voor speciale tekens en symbolen.
Sneltoetsenoverzicht
Zoek gedocumenteerde standaardsneltoetsen voor VS Code, Chrome en Bash met GNU Readline op macOS, Windows en Linux.
E-mailvalidator
Valideer een e-mailadres: RFC 5322-syntaxcontrole, live MX-record-zoekopdracht, plus details over lokaal deel, domein en lengte. Er wordt geen e-mail verstuurd.
EditorConfig-generator
Genereer een .editorconfig-bestand met uw regels voor inspringstijl en -grootte, regeleinde, tekenset en witruimte voor consistente opmaak in alle IDE's en editors.
HTML-opmaker
Formatteer HTML lokaal in de browser met twee of vier spaties inspringing. HTML wordt niet geüpload of gevalideerd.
Tool beschikbaar in andere talen
- JSON till Dart-konverterare [SV]
- محول JSON إلى Dart [AR]
- Trình chuyển JSON sang Dart [VI]
- ตัวแปลง JSON เป็น Dart [TH]
- Conversor de JSON a Dart [ES]
- JSONからDartへの変換ツール [JA]
- Konverter JSON ke Dart [ID]
- Convertisseur JSON vers Dart [FR]
- JSON-in-Dart-Konverter [DE]
- Konwerter JSON na Dart [PL]
- Conversor de JSON para Dart [PT]
- JSON to Dart 변환기 [KO]
- Конвертер JSON в Dart [RU]
- JSON'dan Dart'a Dönüştürücü [TR]
- JSON 转 Dart 工具 [ZH]
- JSON to Dart Converter [EN]
- Convertitore da JSON a Dart [IT]