DocumentosImagensMídiaFerramentas PDF

JSON para Dart Class Online

Gere classes Dart para Flutter a partir de JSON, direto no seu navegador.

Processed in your browser

JSON para classe Dart no Flutter

Pronto para Flutter

Código compatível com Flutter, json_serializable e freezed. Pronto para usar com http, dio ou Riverpod.

100% privado

Seu JSON de API é processado apenas no seu navegador. Dados sensíveis nunca saem do seu dispositivo.

Null safety correto

Detecta campos nullable automaticamente. Tipos obrigatórios com required, opcionais com ? baseados no JSON.

Instantâneo

Classes Dart prontas em milissegundos. Sem cadastro, sem espera, sem limites.

Três passos, sem complicação

1

Cole seu JSON

Cole o JSON da resposta da sua API. A ferramenta infere os tipos Dart corretos para cada campo.

2

Classe Dart gerada

Você recebe uma classe Dart com null safety, construtor factory fromJson(), método toJson() e tipagem completa compatível com json_serializable.

3

Integre no Flutter

Copie a classe gerada para o seu projeto Flutter. Funciona diretamente com o pacote http, dio ou qualquer cliente HTTP.

Ficou com dúvidas?

O json_serializable é o pacote oficial da comunidade Dart/Flutter para serialização JSON com geração de código. Em vez de escrever manualmente os métodos fromJson() e toJson(), você define a classe com a anotação @JsonSerializable() e o gerador de código (build_runner) cria os métodos automaticamente. Esta ferramenta gera código compatível com json_serializable: a estrutura da classe, os tipos e o padrão factory fromJson são exatamente o que o build_runner geraria, permitindo que você use o código gerado diretamente ou como ponto de partida para a versão com geração automática.

O padrão factory fromJson() é o padrão em Dart para desserializar JSON. Um construtor factory pode retornar uma instância existente ou criar uma nova e, neste caso, recebe um Map<String, dynamic> (resultado de jsonDecode()) e constrói o objeto. Exemplo: factory User.fromJson(Map<String, dynamic> json) => User(id: json[id] as int, name: json[name] as String). O método toJson() faz o processo inverso. Esse padrão é explícito, seguro em termos de tipos e fácil de testar.

O Dart 2.12 (2021) introduziu o sound null safety, um dos recursos mais importantes da linguagem. Com null safety, os tipos não podem ser null por padrão: String é sempre uma string não nula, enquanto String? pode ser null. No contexto de JSON, campos que podem estar ausentes ou ser null devem ser tipados como nullable (String?, int?). A palavra-chave required no construtor indica que o parâmetro é obrigatório e não pode ser omitido. Esta ferramenta detecta automaticamente quais campos do JSON podem ser null com base nos seus valores e gera a tipagem correta.

O fluxo típico no Flutter é: 1) Fazer a chamada HTTP com http.get() ou dio, 2) Decodificar o JSON com jsonDecode(response.body), 3) Passar o Map resultante para o construtor factory: final user = User.fromJson(jsonDecode(response.body)). Para listas de objetos: final users = (jsonDecode(response.body) as List).map((e) => User.fromJson(e)).toList(). Com o pacote dio, você pode usar interceptors para transformar as respostas automaticamente. Com Riverpod ou BLoC, as classes geradas são usadas diretamente como estado.

O freezed é um pacote de geração de código para Dart/Flutter que vai além do json_serializable. Ele gera classes imutáveis com: método copyWith() para criar cópias modificadas, padrão union/sealed para modelar estados (similar às sealed classes do Kotlin), igualdade e hashCode automáticos e serialização JSON integrada. É especialmente popular com Riverpod (o gerenciador de estado recomendado pela comunidade Flutter) para modelar o estado da aplicação. A combinação freezed + Riverpod é um dos padrões de arquitetura mais adotados no Flutter profissional.

Adoção do Flutter 2020-2026, sistema de tipos do Dart e desenvolvimento mobile com APIs

O Flutter foi lançado em versão estável pelo Google em dezembro de 2018. Em 2020, com o Flutter 1.17 e a estabilização do null safety, começou a adoção em massa. O Flutter 2 (2021) introduziu suporte multiplataforma (web, desktop) e null safety estável. O Flutter 3 (2022) adicionou suporte completo para macOS, Linux e Windows. Em 2024-2026, o Flutter é o framework mais popular para desenvolvimento de apps móveis multiplataforma, com mais de 1 milhão de aplicações em produção segundo o Google. A integração com APIs REST e GraphQL é fundamental em praticamente todos os aplicativos Flutter.

O sistema de tipos do Dart, projetado pelo Google (a mesma equipe do TypeScript), combina tipagem estática com inferência de tipos. O Dart é uma linguagem compilada (para ARM, x64 nativo para mobile/desktop e para JavaScript para a web) com runtime de alto desempenho. Ao contrário do JavaScript, o Dart possui tipos primitivos verdadeiros (int, double, bool, String) sem coerções implícitas. O sound null safety faz com que o compilador garanta que variáveis não anuláveis nunca sejam null, eliminando uma classe inteira de erros em tempo de execução.

No desenvolvimento mobile moderno com Flutter, consumir APIs REST ou GraphQL é o padrão dominante para comunicação cliente-servidor. O pacote http (oficial do dart.dev) e o dio (o mais popular da comunidade, com interceptors e internacionalização) são os principais clientes HTTP. Para gerenciamento de estado com dados de API, o Riverpod (criado por Remi Rousselet, também criador do provider) com AsyncNotifier é o padrão recomendado em 2024. A arquitetura típica é: camada Repository (classes de dados com fromJson/toJson) -> camada Service (lógica de negócio) -> providers Riverpod -> widgets de UI.