JSON para TypeScript — e também Zod, Go, Python, Java, C#, Rust
Cole um exemplo de JSON e receba interfaces TypeScript, um schema Zod, JSON Schema ou tipos para Go, Python, Java, C#, Kotlin, Swift e Rust.
Os tipos são inferidos só a partir da amostra. Um campo que é null na sua amostra vira null ou any; cole uma amostra mais completa (ou um array com vários registros) para tipos mais precisos.
Funciona inteiramente no seu navegador. Seu JSON nunca é enviado, então é seguro usar respostas reais de API. Ver todas as ferramentas grátis.
Encontrou um problema ou algo que poderia ser melhor? Lemos todas as mensagens e corrigimos rápido.
Este conversor de JSON para TypeScript grátis lê um exemplo de JSON, como uma resposta de API ou um arquivo de configuração, e escreve as interfaces TypeScript correspondentes, com um tipo nomeado para cada objeto aninhado. A mesma entrada também gera um schema Zod, um JSON Schema, structs Go, dataclasses Python ou modelos Pydantic e classes para Java, C#, Kotlin, Swift e Rust, para você parar de digitar nomes de campos à mão.
A inferência de tipos usa o quicktype, o motor de código aberto por trás do quicktype.io e da extensão de editor “Paste JSON as Code”, rodando no seu navegador. Ele mescla todos os objetos de um array, então um campo que aparece só em alguns registros vira opcional. Ele só consegue inferir a partir do que vê: um campo que é null no seu exemplo é tipado como null, e um array vazio como um array de qualquer coisa. Cole um exemplo com valores reais, ou vários registros, para obter os tipos mais precisos.
Como usar
- Cole um objeto JSON ou um array de objetos. Um registro de usuário de exemplo já vem carregado para começar.
- Escolha a saída: interfaces TypeScript, type aliases, Zod, JSON Schema, Go, Python, Java, C#, Kotlin, Swift ou Rust.
- Defina o nome do tipo raiz (por exemplo User ou OrderResponse). Os tipos aninhados recebem o nome das suas chaves.
- Marque “Tornar todas as propriedades opcionais” para payloads parciais, como corpos de PATCH. Desmarque “Só tipos” para obter funções auxiliares de serialização nas linguagens que as suportam.
- Copie o código ou baixe-o como arquivo com a extensão certa.
Perguntas frequentes
Como converto JSON numa interface TypeScript?
Cole o JSON na caixa com TypeScript (interfaces) selecionado. Cada objeto vira uma interface exportada: strings viram string, números number, booleanos boolean, arrays T[], e objetos aninhados ganham interface própria com o nome da chave, como address → Address. Copie o resultado para um arquivo .ts e importe-o onde você faz o parse da resposta.
Devo usar interface ou type alias?
Para formatos de objeto, eles são quase intercambiáveis. Interfaces podem ser estendidas e mescladas ao serem redeclaradas, e muitos guias de estilo as preferem para tipos de objeto públicos. Type aliases também expressam uniões e mapped types. A opção TypeScript (type aliases) produz `export type User = { ... }` se o seu código preferir esse estilo.
Como os campos opcionais são detectados?
Pelo exemplo. Se o seu JSON é um array de objetos e uma chave falta em alguns deles, essa propriedade é marcada como opcional (name?: string). Uma chave presente mas null em todos os registros vira null, e uma que é string em alguns registros e null em outros vira null | string. Para tornar todas as propriedades opcionais, use a opção correspondente.
Por que usar um schema Zod em vez de uma interface TypeScript?
Uma interface só existe em tempo de compilação; ela não consegue verificar se uma API realmente retornou o que você espera. Um schema Zod valida os dados em tempo de execução (UserSchema.parse(data) lança um erro se um campo faltar ou tiver o tipo errado) e fornece o tipo TypeScript via z.infer, então uma única definição cobre as duas coisas. O código Zod gerado exporta o schema e o tipo inferido.
Ele detecta datas e UUIDs?
Só se você ativar “Detectar datas, UUIDs e números em strings”. Vem desativado porque o JSON não tem tipo de data: JSON.parse retorna "2026-03-14T09:26:53Z" como string, então tipá-lo como Date estaria errado, a não ser que você também use o conversor gerado. Com a detecção ativada, Go recebe time.Time, C# DateTimeOffset e Guid, e Python datetime e UUID.
Meu JSON é enviado?
Não. A biblioteca quicktype é baixada uma vez (cerca de 1 MB) e roda na aba do seu navegador. O seu JSON nunca é enviado a lugar nenhum, então é seguro colar respostas reais de API com dados pessoais.
Como os valores JSON viram tipos em cada linguagem
• Strings: string em TypeScript, Go, Swift e Kotlin (String), str em Python, String em Java e Rust, string em C#.
• Números inteiros: number em TypeScript, int64 em Go, int em Python, long em Java, Long em Kotlin, long em C#, Int em Swift, i64 em Rust. Números com casa decimal viram float64, float ou double.
• Booleanos: boolean, bool, Boolean, Bool, conforme a grafia de cada linguagem.
• Arrays: T[] em TypeScript, []T em Go, List[T] ou list[T] em Python, List<T> em Java, Kotlin e C#, [T] em Swift, Vec<T> em Rust.
• Objetos aninhados: um tipo ou classe nomeado à parte. Objetos com muitas chaves dinâmicas (como um mapa de IDs) são detectados e tipados como map ou Record em vez de centenas de campos.
• null: null em TypeScript, interface{} em Go, None em Python, object em C#. Dê ao campo um valor real no seu exemplo para obter um tipo útil.
Como obter tipos precisos a partir de um exemplo
A inferência é tão boa quanto o exemplo. Três hábitos fazem muita diferença. Primeiro, cole vários registros como um array em vez de um único objeto, para que campos opcionais e tipos mistos apareçam. Segundo, troque os nulls por valores realistas quando você souber o tipo, já que um campo que era null em todos os registros não dá nenhuma informação. Terceiro, renomeie o tipo raiz para o que o payload realmente é (InvoiceResponse, não Root); os tipos aninhados recebem o nome das chaves e ficam bem mais legíveis no código quando a raiz tem um nome significativo.
Se a API é sua, a melhor resposta a longo prazo é gerar os tipos a partir do schema dela (OpenAPI ou JSON Schema), e não de exemplos. A saída JSON Schema daqui é um ponto de partida razoável para escrever esse schema.
Ferramentas grátis relacionadas
- Formatador de JSON — Formate, minifique e valide JSON, com erros de parsing localizados por linha e coluna. No seu navegador, sem upload.
- curl para código — Cole um comando curl, inclusive o “Copy as cURL” do Chrome, e receba a mesma requisição em Python, JavaScript, Node, Go, PHP, Ruby, Java, C#, wget ou HTTPie.
- Validador de YAML — Valide YAML com a linha e a coluna exatas de cada erro e pegue os erros que os parsers aceitam sem avisar: booleanos yes/no, tabulações, chaves duplicadas.
- Decodificador JWT — Decodifique o header e o payload de um JWT, leia a expiração em linguagem simples, verifique assinaturas HS, RS, PS e ES ou assine um novo token. Nada sai do seu navegador.
- Formatador de SQL — Transforme SQL bagunçado em consultas legíveis e com indentação consistente para PostgreSQL, MySQL, T-SQL, BigQuery e mais. Roda no seu navegador.