Dart til JSON-konverter
Indsæt Dart-klasser eller Flutter-modeller. Få ren JSON tilbage.
Hvad værktøjet gør
Hvis du bygger en Flutter-app og har en modelklasse, hvis toJson() du ikke har skrevet endnu, eller du bare mangler en eksempel-JSON-body til en test, er det trættende at hakke map'et sammen i hånden. Indsæt din Dart her og du får gyldig JSON tilbage — uden boilerplate, uden at skrive om. Virker med en enkelt klasse, en hel models.dart-fil eller en instans, du har bygget med named arguments.
Konverteren følger den måde, som dart:convert rent faktisk serialiserer på. final-felter kommer igennem med deres værdier. int og double forbliver JSON-tal. bool forbliver en boolean. DateTime bliver til en ISO-8601-streng, samme format som DateTime.toIso8601String() producerer. List<T> bliver et JSON-array; Map<String, dynamic> bliver et JSON-objekt. Nullable-typer (String?) sender null ud, når værdien er null, ellers selve værdien.
Factory constructors, named constructors og fromJson/toJson-helpers bliver alle genkendt — det, der ender i outputtet, er dataene inde i instansen. Indsætter du flere klasser fra en enkelt fil (f.eks. taget fra en pakke på pub.dev), bliver hver klasse en top-level-post, og nestede instanser foldes ud som nestede JSON-objekter. Metoder springes over. Enums serialiseres som standard til deres navn, i tråd med den udbredte describeEnum-konvention.
Sådan bruger du det
Tre trin. Samme flow, uanset om du indsætter en lille klasse eller en hel models.dart.
Indsæt din Dart (eller prøv eksemplet)
Smid din Dart-kode som den er i venstre editor. En klassedefinition, en factory constructor, flere klasser eller en instans med named args — alt er fint. Klik på Indlæs eksempel for at se et realistisk tilfælde.
Imports, annoteringer (@JsonSerializable(), @freezed) og kommentarer kan du godt lade stå — parseren ignorerer det, den ikke skal bruge. Vil du dybere ind i sproget, er dart.dev/language den officielle reference.
Tryk på Konverter
Klik på den grønne Konverter-knap. Værktøjet læser Darten, går hver klasse og hvert felt igennem og laver JSON i én pass. En kort loading-indikator vises, mens det kører.
Kopier JSON'en
Højre panel fyldes med indrykket JSON. Smid det ind i en Flutter-test, en mock response til Dio/http, et Firestore-seed eller din API-doc.
Hvornår det virkelig hjælper
Flutter-integrationstests
Du har en Order-model med nestede Customer og OrderItems. Indsæt klassen, få JSON'en, brug det som mock response i din integrationstest.
Starte API-payloads op
Lav en CreateOrderRequest-klasse om til en JSON-body, der er klar til Postman, curl eller et hurtigt backend-spike — slut med at taste det i hånden.
Bootstrappe json_serializable
Inden du kører build_runner, kan du se præcis, hvilken form <code>toJson()</code> kommer til at levere — nyttigt, når du designer en ny model.
Holde docs i sync
Generér JSON-eksempler til en README eller API-reference direkte fra dine Dart-modeller, så dokumentationen følger den faktiske kode.
Typiske spørgsmål
Kan jeg indsætte flere klasser ad gangen?
Ja — indsæt gerne en hel models-fil. Hver top-level-klasse bliver sin egen JSON-post, og nestede instanser foldes ud som nestede objekter. Private felter (med underscore-præfiks) sendes også ud, ligesom en almindelig toJson() normalt gør.
Hvordan håndteres DateTime, Duration og nullables?
DateTime kommer ud som ISO-8601-streng ifølge toIso8601String(). Duration er et numerisk mikrosekund-tal. Nullable-felter (String?) sender null ud, når værdien er null, ellers selve værdien.
Hvad med List, Map og Set?
List<T> og Set<T> bliver begge JSON-arrays — JSON har ingen set-type, så medlemmerne listes bare. Map<String, dynamic> bliver et JSON-objekt. Nestede generics (List<Map<String, Order>>) foldes ud rekursivt.
Forstår den freezed- eller json_serializable-klasser?
Ja — annoteringerne @freezed og @JsonSerializable genkendes, og de underliggende felter trækkes med i JSON'en. Du behøver ikke køre build_runner først; konverteren læser deklarationen, ikke den genererede kode.
Hvordan sendes enums ud?
Som standard bruges navnet på enum-værdien (OrderStatus.paid → "paid"). Det matcher den normale konvention og holder JSON'en læsbar uden ekstra mapping-kode.
Gemmes min kode?
Din Dart sendes til backenden for at blive konverteret og gemmes ikke — vi logger ikke payloaden. Ved følsom modelkode: giv den et tjek eller en oprydning, før du indsætter den.
Andre værktøjer, du måske får brug for
Dart til JSON er bare ét stykke. Disse spiller godt sammen med det: