Ferramenta Tool Kumar
JSON para Dart
Gere modelos Dart para uma resposta de API no Flutter. A saída tem campos final, construtores const, uma factory fromJson e um método toJson para cada classe aninhada.
Como usar esta ferramenta
- Cole uma resposta representativa, incluindo registros cujos campos sejam diferentes.
- Revise a saída gerada e altere o nome raiz se necessário.
- Copie ou baixe o código e confira se os tipos correspondem ao contrato da sua API.
Exemplo prático
Esta saída vem do conversor integrado. Os dois preços de item permitem inferir um campo de ponto flutuante. Os valores null e string de note permitem inferir um campo que aceita null.
Entrada
{
"user-id": 42,
"profile": {
"city": "London",
"created_at": "2026-10-14T09:00:00Z"
},
"items": [
{
"price": 12,
"note": null
},
{
"price": 12.5,
"note": "gift"
}
]
}Saída
class Root {
final int userId;
final Profile profile;
final List<Item> items;
const Root({
required this.userId,
required this.profile,
required this.items,
});
factory Root.fromJson(Map<String, dynamic> json) => Root(
userId: json['user-id'] as int,
profile: Profile.fromJson(json['profile'] as Map<String, dynamic>),
items: (json['items'] as List<dynamic>).map((e) => Item.fromJson(e as Map<String, dynamic>)).toList(),
);
Map<String, dynamic> toJson() => {
'user-id': userId,
'profile': profile.toJson(),
'items': items.map((e) => e.toJson()).toList(),
};
}
class Profile {
final String city;
final String createdAt;
const Profile({
required this.city,
required this.createdAt,
});
factory Profile.fromJson(Map<String, dynamic> json) => Profile(
city: json['city'] as String,
createdAt: json['created_at'] as String,
);
Map<String, dynamic> toJson() => {
'city': city,
'created_at': createdAt,
};
}
class Item {
final double price;
final String? note;
const Item({
required this.price,
this.note,
});
factory Item.fromJson(Map<String, dynamic> json) => Item(
price: (json['price'] as num).toDouble(),
note: json['note'] as String?,
);
Map<String, dynamic> toJson() => {
'price': price,
'note': note,
};
}
Use o modelo no Flutter
Importe dart:convert e cole as classes geradas em um arquivo de modelo. Passe o mapa da resposta decodificada para Root.fromJson. jsonEncode chama o método toJson gerado.
Se seu projeto já usa json_serializable, adapte os campos a esse fluxo em vez de manter dois conjuntos de métodos JSON gerados.
import 'dart:convert';
final model = Root.fromJson(jsonDecode(responseBody) as Map<String, dynamic>);
final text = jsonEncode(model.toJson());Opções e casos especiais
- Chaves JSON como user-id são mapeadas para campos camelCase. Os métodos JSON gerados mantêm as chaves originais.
- Preços inteiros e fracionários são combinados em double. O decodificador faz a conversão via num e chama toDouble, para que os dois valores do exemplo funcionem.
- Um valor null combinado com uma string produz String?. Um campo observado apenas como null continua sendo dynamic porque seu tipo pretendido é desconhecido.
- Datas continuam sendo String. Revise você mesmo a conversão para DateTime. Dart compilado para a web não consegue representar todos os inteiros grandes com exatidão.
Privado por padrão
Seu documento fica neste navegador. O Tool Kumar analisa, converte e cria downloads no seu dispositivo, sem conta e sem envio ao servidor.
JSON para Dart: perguntas frequentes
- Ele gera anotações json_serializable?
- Não. Ele escreve os métodos fromJson e toJson diretamente. Não há anotações @JsonSerializable, arquivos part nem etapa com build_runner.
- Como ele trata null safety?
- Valores null e campos ausentes em alguns registros fazem os campos inferidos aceitarem null. Campos que não aceitam null usam argumentos required no construtor. Campos observados apenas como null usam dynamic.
- Ele pode converter arrays de objetos aninhados?
- Sim. O exemplo produz List<Item>, mapeia cada elemento de entrada por Item.fromJson e chama toJson em cada item ao codificar.
- Preciso de um pacote Flutter?
- Os modelos gerados usam os tipos básicos de Dart. Decodifique o texto da resposta com dart:convert e chame Root.fromJson.
Ferramentas relacionadas
JSON para Swift, JSON para Kotlin data class e Gerador de JSON Schema.