Ir para o conteúdo
Totalmente local

JSON para classe Dart

Transforme uma amostra JSON numa classe Dart com fromJson, toJson e modelos aninhados.

Entrada
Saída

JSON para classe Dart

Cole uma amostra JSON e esta ferramenta infere a forma dos dados e gera uma classe Dart correspondente — o tipo que escreveria manualmente para um modelo Flutter. Os objetos aninhados tornam-se suas próprias classes, as matrizes tornam-se campos `List<...>` digitados, e cada classe inclui um construtor nomeado, uma fábrica `fromJson` e um método `toJson`, para que o resultado se integre diretamente num projeto Flutter ou Dart.

As opções controlam o estilo do código gerado. "Nome da classe" define a classe raiz; as classes aninhadas são nomeadas segundo a chave JSON que as introduziu. "Segurança nula com campos obrigatórios" marca os campos presentes em cada amostra como `required` com um tipo não anulável, e os campos que às vezes faltam como anuláveis — desactive para tornar todos os campos anuláveis, mais tolerante com APIs inconsistentes. "Anotações json_serializable" muda de corpos `fromJson`/`toJson` para anotações `@JsonSerializable()` e `@JsonKey`, para projetos já a usar esse pacote e build_runner. "Campos finais" torna a classe imutável; "Gerar copyWith" adiciona um método para criar uma cópia modificada, e "Gerar == e hashCode" adiciona igualdade de valor. "Indentação" muda o código entre 2 e 4 espaços.

Quando a mesma forma de objeto se repete — uma matriz de itens que têm todos os mesmos campos, por exemplo — a ferramenta reutiliza uma classe em vez de gerar uma duplicada. Um campo que falta em algumas entradas é corretamente inferido como opcional. As chaves JSON que não são identificadores Dart válidos ou colidem com uma palavra-chave são automaticamente renomeadas enquanto a chave original é preservada para codificar e descodificar.

Tudo é executado localmente no seu navegador: nenhuma amostra JSON é alguma vez enviada para qualquer lugar, o que importa se contiver dados reais do utilizador ou a forma de resposta de uma API interna.

FAQ

Como são tratados os objetos aninhados e as matrizes?
Cada objeto aninhado torna-se sua própria classe Dart nomeada segundo o campo que a introduziu, e uma matriz de objetos torna-se uma lista digitada List<SuaClasse>. Se a mesma forma aparece mais de uma vez, a ferramenta reutiliza uma única classe em vez de a duplicar para cada ocorrência.
O que "Segurança nula com campos obrigatórios" realmente muda?
Quando está ativada, um campo que a ferramenta vê em cada amostra obtém um tipo não anulável e um parâmetro de construtor `required`; um campo que às vezes falta ou é nulo obtém um tipo anulável sem a palavra-chave `required`. Desativar torna todos os campos anuláveis e opcionais, o que é mais tolerante com APIs cujas respostas variam.
Preciso do pacote json_serializable?
Apenas se ativar a opção "Anotações json_serializable", que emite `@JsonSerializable()`/`@JsonKey` e uma diretiva de parte esperando um ficheiro `.g.dart` gerado por build_runner. Desative-a e a ferramenta escreve métodos `fromJson`/`toJson` simples e sem dependências.
Consegue deduzir corretamente o tipo de um campo numérico?
Sim. Um campo que é sempre um número inteiro torna-se `int`; se qualquer valor de amostra tiver um ponto decimal, todo o campo é alargado para `double` para que nenhum valor seja truncado.
O meu JSON é enviado para algum lugar?
Não. A classe é gerada inteiramente no seu navegador — a sua amostra JSON nunca sai do seu dispositivo.