Ir para o conteúdo principal
Bethemesh

JSON para TypeScript, Zod e JSON Schema

Infira interfaces TypeScript, tipos, esquemas Zod ou JSON Schema a partir de objetos e arrays de um exemplo JSON, localmente.

  • Área de transferência
  • Exportar

Integrar este widget

Personalize o resultado, verifique a pré-visualização e copie o código.

Pré-visualização

Tipo de código de integração

Código a copiar

Responsivo e redimensionado automaticamente pela Bethemesh.

Esta ferramenta foi útil?

Como funciona esta ferramenta?

Transforme um exemplo JSON em interfaces ou aliases TypeScript, esquemas Zod ou JSON Schema. O gerador percorre objetos aninhados e todos os elementos dos arrays, não apenas o primeiro. O resultado é uma base a rever segundo a API: uma amostra não revela todos os valores que um serviço poderá devolver. A inferência acontece no dispositivo e o código gerado não é executado no formulário.

O motor identifica strings, números, booleanos, objetos, arrays e null. Diferentes tipos observados podem formar uma união. Os números TypeScript usam number; strings semelhantes a datas ou emails mantêm-se string, sem regras de negócio adivinhadas. Um array vazio não revela elementos futuros e produz um tipo desconhecido.

Num array de objetos combinam-se as propriedades observadas. Um campo ausente em algumas entradas pode tornar-se opcional. Exigir todos os campos cria um contrato mais rigoroso que algumas amostras deixariam de cumprir. Um campo presente com null não está ausente: nulabilidade e opcionalidade são informações distintas.

Escolha interface ou type para declarações TypeScript, Zod para código de validação ou JSON Schema para um documento de esquema. readonly aplica-se a TypeScript, sem congelar objetos em execução. A saída Zod importa zod, que o projeto deve disponibilizar, e declara esquemas filhos antes das referências dos pais.

Os destinos partilham inferência, sem prometer comportamentos idênticos. TypeScript verifica código em desenvolvimento, não automaticamente respostas de rede. Zod requer uma chamada efetiva de validação. JSON Schema fecha os objetos com additionalProperties: false; decida explicitamente como tratar chaves adicionais antes de integrar.

Como usar esta ferramenta

  1. Adicione uma amostra representativa

    Cole ou importe JSON válido. Evite dados pessoais desnecessários: interessam estrutura e diferentes tipos observados.

  2. Escolha nome raiz e destino

    Dê um nome ao modelo e selecione a saída. Ajuste campos ausentes e readonly quando o destino TypeScript o permitir.

  3. Reveja e integre o código

    Verifique uniões, propriedades opcionais e dependências antes de copiar ou exportar. Alterar entradas ou opções oculta o resultado anterior. Compile ou valide depois no projeto.

Casos de uso

Esboçar modelos de resposta API

Forneça exemplos representativos com aninhamentos, variantes e null. Reveja depois nomes propostos e campos realmente garantidos pelo fornecedor.

Preparar validação Zod

Gere esquemas básicos e acrescente formatos, limites e regras da aplicação. Uma string simples não é automaticamente considerada um URL válido.

Comparar várias amostras com um contrato

Agrupe objetos comparáveis num array para revelar campos presentes apenas em alguns casos. Inclua situações raras conhecidas.

Exemplos

Criar duas interfaces para uma resposta aninhada

Com nome raiz Response e destino interface, user torna-se um modelo User separado. id é number e name string; os valores concretos da amostra não são fixados.

Entrada

{"user":{"id":1,"name":"Ada"}}

Resultado

export interface Response {
  user: User;
}

export interface User {
  id: number;
  name: string;
}

Declarar dependências Zod antes da utilização

Com nome raiz Root e saída Zod, ChildSchema precede RootSchema e evita referir uma constante antes da inicialização.

Entrada

{"child":{"id":1}}

Resultado

import { z } from 'zod';

export const ChildSchema = z.object({
  id: z.number(),
});
export type Child = z.infer<typeof ChildSchema>;

export const RootSchema = z.object({
  child: ChildSchema,
});
export type Root = z.infer<typeof RootSchema>;

Dicas e boas práticas

  • Inclua campos omitidos e valores null. Uma resposta totalmente preenchida oculta frequentemente propriedades opcionais.
  • Uma amostra não prova um conjunto exaustivo de valores nem um limite numérico. Acrescente restrições com base na documentação do serviço.
  • Não confunda readonly com proteção em execução: trata-se aqui de uma verificação TypeScript.
  • Mantenha identificadores grandes como strings quando a API os representar assim. JSON é lido com os tipos numéricos do navegador.

Fontes e referências

Perguntas frequentes

Uma interface gerada valida respostas da API?

Não. TypeScript descreve valores esperados durante o desenvolvimento. Para verificar dados recebidos em execução, adicione um validador e use efetivamente o resultado antes de confiar na resposta.

Como são detetadas propriedades opcionais?

Comparam-se objetos do mesmo array para encontrar chaves ausentes em algumas entradas. Um único objeto que contém sempre um campo não revela se esse campo poderá ser omitido.

Porque fica uma data ou email como string?

A amostra fornece uma string, não prova a regra de negócio. O gerador evita validações arbitrárias com base no aspeto. Acrescente explicitamente formatos e restrições necessários.

Qual é a diferença para o gerador JSON Schema autónomo?

Aqui existem vários destinos e opções de nomes ou campos opcionais. O gerador autónomo produz diretamente um esquema e distingue inteiros observados. Ambos usam a mesma inferência partilhada.

Ferramentas relacionadas

Ferramentas semelhantes ou complementares a esta.

Ferramentas semelhantes

Gere um JSON Schema a partir de um exemplo JSON, localmente no navegador.

DesenvolvimentoUtilizar esta ferramenta

Valide um documento JSON com um esquema e localize precisamente cada erro.

DesenvolvimentoEm destaqueUtilizar esta ferramenta

Gere conjuntos de dados fictícios realistas em JSON, CSV ou SQL.

DesenvolvimentoUtilizar esta ferramenta