Desenvolvedor 🔒 Roda no seu navegador — nenhum dado é enviado

JSON para Tipos

Transforme uma amostra de JSON em interfaces TypeScript, structs Go, modelos Python, classes C#, structs Rust ou um JSON Schema.

JSON para Tipos - TypeScript, Go, Python, C#, Rust e JSON Schema

Cole uma amostra de JSON, como a resposta de uma API, e receba as definições de tipo que combinam com ela: interfaces TypeScript, structs Go com tags JSON, modelos Pydantic ou dataclasses, classes C#, structs Rust para serde ou um JSON Schema. Objetos aninhados viram tipos próprios com nome, então o resultado parece código escrito por uma pessoa.

Respostas de API costumam trazer dados reais de clientes, tokens e IDs internos. A conversão roda inteiramente no seu navegador, então nada disso é enviado a lugar nenhum.

Como usar

  1. Cole o JSON na caixa da esquerda, ou clique em Exemplo para ver uma amostra.
  2. Escolha a linguagem em Saída.
  3. Defina o Nome da raiz do tipo de nível superior; para TypeScript, escolha interface ou type.
  4. Copie o resultado para o seu projeto.

Como os tipos são deduzidos

  • Números viram inteiros quando todos os valores são inteiros, e ponto flutuante nos outros casos: 42 e 18.5 no mesmo campo dão um float.
  • Arrays de objetos são mesclados: toda chave vista em qualquer item aparece no tipo.
  • Campos opcionais: com Marcar chaves ausentes como opcionais ligado, uma chave que falta em alguns itens vira opcional (coupon?: string, omitempty, Option, = None).
  • Campos anuláveis: um valor null em um item torna o campo anulável, por exemplo string | null, ou *string em Go.
  • Tipos mistos, como um número em um item e uma string em outro, dão unknown, Any ou interface{}, para você decidir à mão.
  • Nomes vêm das chaves: address gera Address, e os itens de orders geram Order. Objetos com o mesmo formato compartilham um único tipo.

Por linguagem

SaídaO que você recebe
TypeScriptexport interface ou export type; chaves que não são nomes válidos ficam entre aspas
GoStructs exportadas com tags json, int64 e float64, e siglas comuns como ID e URL
Python (Pydantic)Classes BaseModel; campos em snake_case com Field(alias=...) quando a chave JSON é diferente
Python (dataclass)Classes @dataclass, com os campos opcionais no final, como as dataclasses exigem
C#Classes com [JsonPropertyName] para System.Text.Json, long, double e List<T>
RustStructs que derivam Serialize e Deserialize, com #[serde(rename)] onde for preciso
JSON SchemaUm schema draft 2020-12 com listas required, pronto para validadores

Como obter os tipos mais precisos

Um tipo só é tão completo quanto a amostra de onde veio. Use uma resposta que traga cada campo opcional pelo menos uma vez, e cole um array com vários itens diferentes em vez de um só, para que a mesclagem veja quais campos variam. Datas chegam no JSON como strings e continuam strings; converta-as no seu código onde precisar de tipos de data de verdade.

Ferramentas relacionadas

Para organizar ou validar o JSON antes, use o formatador de JSON. Para transformá-lo em YAML, CSV ou XML, use o conversor de JSON. As páginas de tarefa abrem esta ferramenta com uma linguagem já escolhida: JSON para TypeScript, JSON para Go, JSON para Python, JSON para C# e gerador de JSON Schema.

Guias relacionados