Conversor de Dart para JSON
Cole classes Dart ou modelos Flutter. Receba JSON limpo de volta.
O que esta ferramenta faz
Se você está tocando um app Flutter e tem uma classe de modelo com um toJson() que ainda não escreveu, ou só precisa de um corpo JSON de exemplo pra um teste, montar o map na mão é chato. Cola seu Dart aqui e você recebe JSON válido — sem boilerplate, sem reescrever nada. Funciona com uma única classe, um models.dart inteiro, ou uma instância que você montou com argumentos nomeados.
O conversor segue como o dart:convert serializa de verdade. Campos final saem com os valores deles. int e double continuam como números JSON. bool continua booleano. DateTime vira uma string ISO-8601, o mesmo formato que DateTime.toIso8601String() produz. List<T> vira um array JSON; Map<String, dynamic> vira um objeto JSON. Tipos nullable (String?) emitem null quando o valor é null, ou o próprio valor caso contrário.
Factory constructors, construtores nomeados e helpers fromJson/toJson são todos reconhecidos — o que vai pra saída é o dado dentro da instância. Se você colar várias classes num único arquivo (por exemplo, tiradas de um pacote do pub.dev), cada classe vira uma entrada de topo e as instâncias aninhadas se expandem como objetos JSON aninhados. Métodos são ignorados. Enums são serializados por padrão pelo nome, seguindo a convenção comum do describeEnum.
Como usar
Três passos. O fluxo é o mesmo, cole uma classe pequena ou um models.dart inteiro.
Cole seu Dart (ou teste o exemplo)
Jogue seu código Dart como está no editor da esquerda. Uma definição de classe, um factory constructor, várias classes, ou uma instância com argumentos nomeados — tudo vale. Clique em Carregar exemplo pra ver um caso realista.
Pode manter imports, anotações (@JsonSerializable(), @freezed) e comentários — o parser ignora o que não precisa. Pra aprofundar na linguagem, dart.dev/language é a referência oficial.
Clique em Converter
Clique no botão verde Converter. A ferramenta lê o Dart, percorre cada classe e campo e gera o JSON numa passada só. Um indicador de loading curto aparece enquanto roda.
Copie o JSON
O painel da direita enche com JSON indentado. Joga num teste Flutter, numa mock response pra Dio/http, num seed do Firestore ou na doc da sua API.
Quando isso salva o dia
Testes de integração no Flutter
Você tem um modelo Order com Customer e OrderItems aninhados. Cola a classe, pega o JSON, usa como mock response no seu teste de integração.
Montagem de payloads de API
Transforma uma classe CreateOrderRequest em um corpo JSON pronto pra Postman, curl ou um teste rápido de backend — nunca mais precisa digitar na mão.
Bootstrap do json_serializable
Antes de rodar o build_runner, dá pra ver exatamente o formato que o <code>toJson()</code> vai produzir — útil quando você está desenhando um modelo novo.
Manter a doc em dia
Gera amostras JSON pra um README ou referência de API direto dos seus modelos Dart, pra documentação acompanhar o código real.
Perguntas frequentes
Dá pra colar várias classes de uma vez?
Dá — cola um arquivo de modelos inteiro. Cada classe de topo vira a própria entrada JSON, e instâncias aninhadas se expandem como objetos aninhados. Campos privados (com underscore) também são emitidos, igual um toJson() normal costuma fazer.
Como lida com DateTime, Duration e nullables?
DateTime sai como string ISO-8601 no estilo do toIso8601String(). Duration é uma contagem numérica de microssegundos. Campos nullable (String?) emitem null quando o valor é null, ou o próprio valor caso contrário.
E List, Map e Set?
List<T> e Set<T> viram arrays JSON — JSON não tem tipo set, então os membros são listados. Map<String, dynamic> vira um objeto JSON. Generics aninhados (List<Map<String, Order>>) são expandidos recursivamente.
Entende classes freezed ou json_serializable?
Sim — as anotações @freezed e @JsonSerializable são reconhecidas e os campos debaixo vão pro JSON. Não precisa rodar build_runner antes; o conversor lê a declaração, não o código gerado.
Como os enums são emitidos?
Por padrão, usa o nome do valor do enum (OrderStatus.paid → "paid"). Bate com a convenção mais comum e deixa o JSON legível sem precisar de código extra de mapeamento.
Meu código é armazenado?
Seu Dart é enviado pro backend pra conversão e não é persistido — não logamos o payload. Pra código de modelo sensível, revisa ou limpa antes de colar.
Outras ferramentas que podem te servir
Dart para JSON é só uma peça. Essas combinam bem com ela: