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
- Cole o JSON na caixa da esquerda, ou clique em Exemplo para ver uma amostra.
- Escolha a linguagem em Saída.
- Defina o Nome da raiz do tipo de nível superior; para TypeScript, escolha
interfaceoutype. - 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:
42e18.5no 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
nullem um item torna o campo anulável, por exemplostring | null, ou*stringem Go. - Tipos mistos, como um número em um item e uma string em outro, dão
unknown,Anyouinterface{}, para você decidir à mão. - Nomes vêm das chaves:
addressgeraAddress, e os itens deordersgeramOrder. Objetos com o mesmo formato compartilham um único tipo.
Por linguagem
| Saída | O que você recebe |
|---|---|
| TypeScript | export interface ou export type; chaves que não são nomes válidos ficam entre aspas |
| Go | Structs 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> |
| Rust | Structs que derivam Serialize e Deserialize, com #[serde(rename)] onde for preciso |
| JSON Schema | Um 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.