Dart naar JSON Converter
Plak Dart-klassen of Flutter-modellen. Krijg schone JSON terug.
Wat deze tool doet
Als je aan een Flutter-app werkt en je hebt een modelklasse waarvan de toJson() nog niet geschreven is, of je hebt gewoon even een voorbeeld-JSON-body nodig voor een test, dan is de map met de hand bouwen vervelend werk. Plak je Dart hier en je krijgt geldige JSON terug — geen boilerplate, geen herschrijven. Werkt met één klasse, een volledig models.dart-bestand, of een instance die je met named arguments hebt opgebouwd.
De converter volgt hoe dart:convert daadwerkelijk serialiseert. final-velden komen er met hun waarden uit. int en double blijven JSON-nummers. bool blijft een boolean. DateTime wordt een ISO-8601-string, hetzelfde formaat dat DateTime.toIso8601String() oplevert. List<T> wordt een JSON-array; Map<String, dynamic> wordt een JSON-object. Nullable types (String?) geven null wanneer de waarde null is, anders de waarde zelf.
Factory constructors, named constructors en fromJson/toJson-helpers worden allemaal herkend — wat in de output terechtkomt, is de data binnen de instance. Plak je meerdere klassen uit één bestand (bijvoorbeeld uit een pub.dev-package), dan wordt elke klasse een top-level entry en worden geneste instances uitgeklapt als geneste JSON-objecten. Methods worden overgeslagen. Enums worden standaard geserialiseerd op hun naam, wat aansluit bij de gangbare describeEnum-conventie.
Hoe gebruik je het
Drie stappen. Zelfde flow of je nou een kleine klasse plakt of een hele models.dart.
Plak je Dart (of probeer het voorbeeld)
Gooi je Dart-code zo in de linker editor. Een klassedefinitie, een factory constructor, meerdere klassen, of een instance met named args — allemaal prima. Klik op Voorbeeld laden voor een realistisch voorbeeld.
Imports, annotaties (@JsonSerializable(), @freezed) en commentaar mag je laten staan — de parser negeert wat niet nodig is. Voor meer diepgang in de taal is dart.dev/language de officiële referentie.
Klik op Converteer
Klik op de groene Converteer-knop. De tool leest het Dart, loopt elke klasse en elk veld na, en produceert in één pass de JSON. Terwijl het draait zie je kort een loading-indicator.
Kopieer de JSON
Het rechterpaneel vult zich met ingesprongen JSON. Zet hem in een Flutter-test, een mock response voor Dio/http, een Firestore-seed of je API-documentatie.
Wanneer dit echt handig is
Flutter integration tests
Je hebt een Order-model met geneste Customer en OrderItems. Plak de klasse, krijg de JSON, gebruik het als mock response in je integration test.
API-payloads opzetten
Maak van een CreateOrderRequest-klasse een JSON-body die direct klaar is voor Postman, curl of een snelle backend-spike — klaar met handmatig typen.
json_serializable opzetten
Voordat je build_runner draait, zie je al precies welke vorm <code>toJson()</code> gaat uitspugen — handig als je een nieuw model ontwerpt.
Documentatie in sync houden
Genereer JSON-samples voor een README of API-referentie rechtstreeks uit je Dart-modellen, zodat de docs de echte code volgen.
Veelgestelde vragen
Mag ik meerdere klassen tegelijk plakken?
Ja — plak gerust een heel modelbestand. Elke top-level klasse wordt een eigen JSON-entry, en geneste instances worden uitgeklapt als geneste objecten. Private velden (met underscore-prefix) worden ook meegenomen, net zoals een standaard toJson() dat zou doen.
Hoe gaat het om met DateTime, Duration en nullables?
DateTime komt eruit als ISO-8601-string via toIso8601String(). Duration is een numerieke microseconden-waarde. Nullable velden (String?) geven null wanneer de waarde null is, anders de waarde zelf.
En met List, Map en Set?
List<T> en Set<T> worden allebei JSON-arrays — JSON kent geen set-type, dus de elementen worden gewoon opgesomd. Map<String, dynamic> wordt een JSON-object. Geneste generics (List<Map<String, Order>>) worden recursief uitgeklapt.
Begrijpt hij freezed- of json_serializable-klassen?
Ja — de @freezed- en @JsonSerializable-annotaties worden herkend en de onderliggende velden komen in de JSON terecht. Je hoeft build_runner niet eerst te draaien; de converter leest de declaratie, niet de gegenereerde code.
Hoe worden enums uitgevoerd?
Standaard wordt de naam van de enum-waarde gebruikt (OrderStatus.paid → "paid"). Dat sluit aan bij de gangbare conventie en houdt de JSON leesbaar zonder extra mapping-code.
Wordt mijn code opgeslagen?
Je Dart wordt voor de conversie naar de backend gestuurd en niet bewaard — we loggen de payload niet. Voor gevoelige modelcode: check of scrub het even voor je plakt.
Andere tools die je misschien kunt gebruiken
Dart naar JSON is maar één stukje. Deze combineren er goed mee: