Conversor de JSON para código

Transforme uma amostra de JSON em interfaces TypeScript, structs Go, structs serde do Rust, um esquema Zod ou JSON Schema.

Carregando ferramenta…

Conversor de JSON para códigoCole uma amostra representativa de JSON e obtenha na hora código fortemente tipado na sua linguagem de destino: interfaces TypeScript, structs Go com tags json, structs serde do Rust, um esquema Zod ou JSON Schema draft-07. Os tipos são inferidos diretamente dos dados: objetos aninhados viram tipos nomeados, arrays inferem o tipo do seu elemento e campos que não estão presentes em todos os itens de um array são marcados como opcionais. Tudo roda no seu navegador, então o seu JSON nunca é enviado.

O que é Conversor de JSON para código?

JSON para código é um gerador de tipos gratuito que funciona no navegador: ele lê uma amostra de JSON e escreve o modelo de dados correspondente na linguagem que você escolher. Escolha um destino no menu Converter para (interface TypeScript, struct Go, struct serde do Rust, esquema Zod ou JSON Schema) e defina um Nome do tipo raiz para rotular o tipo de nível superior. O motor de inferência percorre o JSON: strings, números, booleanos e null são mapeados para tipos nativos, objetos aninhados são elevados a seus próprios tipos nomeados, arrays adotam o tipo do seu elemento e chaves ausentes em alguns elementos de um array passam a ser opcionais. Desenvolvedores de frontend e backend usam a ferramenta para gerar DTOs a partir de respostas de API, esboçar esquemas de validação e manter os tipos do cliente e do servidor sincronizados sem escrever código repetitivo à mão.

Como usar Conversor de JSON para código

  1. Cole ou digite uma amostra representativa de JSON na caixa de entrada, ou clique em Exemplo para carregar um.
  2. Abra as Configurações e escolha um destino em Converter para: TypeScript, Go, Rust, Zod ou JSON Schema.
  3. Defina o Nome do tipo raiz para controlar o nome da interface, do struct ou do esquema de nível superior.
  4. Leia o código gerado no painel de saída; ele é atualizado automaticamente à medida que você edita o JSON ou altera as opções.
  5. Veja a estatística Tipos para saber quantos tipos nomeados foram inferidos e clique em Copiar para levar o resultado.

Exemplos

Objeto para interface TypeScript

Entrada

{ "id": 1, "name": "Ada", "active": true }

Saída

export interface Root {
  id: number;
  name: string;
  active: boolean;
}

Objeto aninhado para struct Go

Entrada

{ "user": { "age": 30 } }

Saída

type User struct {
	Age float64 `json:"age"`
}

type Root struct {
	User User `json:"user"`
}

Array com uma chave ausente para um esquema Zod

Cole um array como [{"a":1,"b":2},{"a":3}] e mude Converter para para Zod. Como o segundo elemento não tem b, o gerador marca b como .optional() no z.object inferido, de modo que o esquema aceita ambos os formatos.

Perguntas frequentes

Meu JSON é enviado para algum lugar?
Não. A análise e a geração de código rodam inteiramente no seu navegador usando um motor de inferência integrado. Seu JSON nunca sai do seu dispositivo e a ferramenta continua funcionando offline.
Quais destinos são suportados?
Interfaces TypeScript, structs Go (com tags json e omitempty para campos opcionais), structs serde do Rust (com os derives Serialize/Deserialize e rename quando um campo é renomeado), esquemas Zod e JSON Schema draft-07. A ferramenta só gera o que consegue inferir fielmente da sua amostra.
Como os campos opcionais são definidos?
A partir da sua amostra. Quando um array contém objetos e uma chave está ausente em alguns deles, essa chave é inferida como opcional. Fora isso, toda chave presente na amostra é tratada como obrigatória.
E quanto a números, null e tipos mistos?
Números são mapeados para o tipo de ponto flutuante da linguagem (number, float64, f64), null é mapeado para um tipo anulável ou de valor conforme o destino, e um campo que contém tipos diferentes entre amostras recorre a um tipo permissivo (unknown, interface{}, serde_json::Value) em vez de adivinhar.
Por que minha saída está vazia ou mostra um erro?
A entrada precisa ser JSON válido. Se a análise falhar, a ferramenta mostra o erro com a linha e a coluna quando disponíveis; corrija o ponto indicado e o código é regerado na hora.

Ferramentas relacionadas