nicetool.dev logo

JSON para TypeScript

Cole uma resposta de API ou um objeto JSON. Os tipos mudam enquanto você digita.

JSON
Código gerado
export interface User {
  id: number;
  name: string;
  email: string;
  score: number;
  active: boolean;
  tags: string[];
  address: Address;
  orders: Order[];
}

export interface Address {
  city: string;
  postcode: null;
}

export interface Order {
  id: number;
  total: number;
  paidAt?: string;
  coupon?: string;
}

Por que gerar tipos a partir de JSON?

APIs, arquivos de configuração e webhooks entregam JSON, mas TypeScript, Go e validadores em tempo de execução precisam de uma estrutura explícita. Escrever interfaces à mão para uma resposta grande é lento e propenso a erros: um campo que às vezes falta, um número que às vezes é null ou um array aninhado de objetos são fáceis de descrever errado. Esta ferramenta lê um exemplo real e deduz a estrutura para você. Arrays de objetos são mesclados, então chaves que aparecem só em alguns itens viram opcionais, chaves que às vezes são null viram anuláveis e cada objeto aninhado ganha seu próprio nome de tipo.

Recursos

  • • Interfaces ou aliases de tipo TypeScript com campos opcionais (?)
  • • Structs Go com tags json, omitempty e nomes idiomáticos (ID, URL)
  • • Schemas Zod com tipos TypeScript inferidos, ordenados para resolver referências
  • • Mescla arrays de objetos e detecta null, valores mistos e inteiros
  • • Coloca entre aspas chaves que não são identificadores válidos, como "first-name"

Seus dados ficam privados

A análise e a geração de código rodam no navegador. Respostas de API com dados reais de clientes não saem da sua máquina.

Sem upload, funciona offline.

Como usar: JSON para TypeScript

  1. 1

    Cole um exemplo de JSON, por exemplo uma resposta copiada da aba Rede do navegador, do Postman ou do curl. Quanto mais itens os arrays tiverem, melhor os campos opcionais são detectados.

  2. 2

    Escolha a saída: interfaces TypeScript, structs Go ou schemas Zod. No TypeScript dá para trocar para aliases de tipo.

  3. 3

    Defina o nome do tipo raiz, como User ou OrderResponse. Objetos aninhados recebem o nome da chave e itens de array usam o singular (orders vira Order).

  4. 4

    Revise o resultado, ajuste o que o exemplo não mostra (como uma string que na verdade é data ou enum) e copie para o seu código.

Exemplos práticos

Tipar uma resposta REST

Cole o JSON de GET /api/users/42 e obtenha uma interface User com um tipo Address aninhado, pronta para usar com fetch ou axios.

Cliente Go para uma API externa

Gere structs com tags json para o payload de um webhook do Stripe ou do GitHub. Chaves opcionais ganham omitempty e objetos aninhados viram tipos separados.

Validação em tempo de execução com Zod

Transforme um corpo de requisição de exemplo em schema Zod e use schema.parse() num route handler do Next.js para barrar entradas malformadas, com z.infer para o tipo estático.

Arquivos de configuração

Cole uma configuração JSON para obter uma interface tipada, assim o editor completa as chaves e aponta erros de digitação.

Perguntas frequentes

Como os campos opcionais são detectados?+

Quando a raiz ou um valor aninhado é um array de objetos, todos os itens são mesclados. Uma chave que falta em pelo menos um item vira opcional (? no TypeScript, omitempty no Go, .optional() no Zod).

O que acontece com valores null?+

Uma chave que é null em alguns itens e string em outros vira string | null (nullable() no Zod, *string no Go). Uma chave que é null em todo o exemplo continua null, pois o tipo real é desconhecido.

Por que um número vira int64 no Go?+

Inteiros do exemplo viram int64 e decimais float64. Se um campo mistura os dois, ele é ampliado para float64 (number no TypeScript).

Ele detecta datas, enums ou UUIDs?+

Não. O JSON não tem tipo de data nem enum, então aparecem como string. Refine à mão, por exemplo com z.string().datetime() ou uma união de valores literais.