Saltar para o conteúdo
4all.tools

Gere TypedDict de Python a partir de exemplos JSON completos

Infira declarações TypedDict localmente, preserve as chaves exatas e diferencie campos ausentes de None.

Espaço de trabalho da ferramenta

JSON para Python

Declarações TypedDict para Python 3.11+; apenas biblioteca padrão.

NotRequired representa uma chave ausente; None representa null. TypedDict não valida dados durante a execução. Lexemas inteiros usam int; decimais ou com expoente usam float, que pode aproximar números.

Ative JavaScript para gerar código. Você pode ler e editar o JSON.

Todos os elementos e documentos contribuem para o mesmo contrato. Um array na raiz continua sendo um array. Ausência de campo é diferente de null.

Até 20 documentos, 1.000.000 de unidades UTF-16 de entrada e 2.000.000 de saída; outros limites de recursos também se aplicam.

Seu JSON é processado localmente em um Worker do navegador. Não é enviado nem armazenado.

Use entre 1 e 64 letras e dígitos ASCII, começando por uma letra. Nomes reservados são rejeitados.

Pronto para inserir JSON.

    Documentos completos e todos os elementos

    Cole JSON estrito ou abra um arquivo UTF-8 local. Gere por ação explícita a partir de um documento ou até vinte exemplos completos do mesmo contrato. Todos os elementos e documentos contribuem, incluindo propriedades do último registro. Um array raiz continua sendo um array. Exemplos vazios, chaves decodificadas duplicadas, comentários, vírgulas finais e documentos concatenados interrompem a geração e preservam a entrada.

    O editor mostra o exemplo ativo e o total. Após gerar, confira o nome do arquivo, a expressão do tipo raiz, a quantidade de nós JSON e o tamanho do código completo. Esses dados descrevem o resultado atual; copiar e baixar incluem todo o arquivo mesmo quando a prévia está limitada.

    [{"id":1},{"id":2,"nombre":"Ana"}]
    from typing import NotRequired, TypeAlias, TypedDict
    
    RootItem = TypedDict("RootItem", {
      "id": int,
      "nombre": NotRequired[str],
    })
    
    Root: TypeAlias = list[RootItem]

    Presença, None e chaves exatas

    NotRequired[T] indica que uma chave faltou em alguns objetos do contexto; T | None indica null observado. Para [{"x":null},{"x":"a"},{}], o campo é NotRequired[str | None]. Um campo obrigatório exclusivamente null usa None; se for opcional usa NotRequired[None]. A ausência não acrescenta None nem valores padrão. Objetos em propriedades diferentes mantêm contratos separados.

    A sintaxe funcional de TypedDict preserva chaves como class, a-b, string vazia, aspas, emoji e escapes de substitutos isolados; apenas identificadores de código são ajustados em colisões. Dependências são declaradas antes do uso. Requer Python 3.11+ e apenas sua biblioteca padrão. TypedDict descreve dicionários comuns: não valida JSON nem exige chaves obrigatórias durante a execução. Não gera desserializadores, dataclasses, modelos Pydantic, datas ou enums.

    A raiz [1,"x",null] produz list[int | str | None]; [null] usa list[None], [] usa list[object] com aviso e {} usa dict[str, object] por falta de campos observados. O alias de uma raiz null usa types.NoneType. Raízes primitivas e uniões têm alias TypeAlias.

    Números e exportação local completa

    Lexemas exclusivamente inteiros usam int, incluindo números fora do intervalo seguro de JavaScript. Ponto ou expoente seleciona float, também na mistura de inteiros e decimais. O aviso de precisão do parser permanece mesmo quando int pode representar o número original; float avisa quando a evidência mostra perda de precisão. O inteiro -0 gera aviso porque int normaliza o sinal. A saída não inclui valores dos exemplos nem conversões.

    Limites: 20 exemplos, 1.000.000 unidades UTF-16 de entrada, 4.000.000 bytes UTF-8 agregados e por arquivo, profundidade 200, 100.000 nós, 1.000.000 unidades de análise, 100.000 visitas de inferência, 10.000 tipos, 20.000 campos, 2.000.000 unidades de fusão, 2.000 declarações e 4.000.000 unidades de emissão. A saída permite 2.000.000 unidades UTF-16 e 8.000.000 bytes. Os máximos não necessariamente podem ser atingidos juntos; a operação expira após 15 segundos sem código parcial.

    A prévia contém até 20.000 unidades UTF-16; copiar e baixar incluem todo o types.py vigente, UTF-8 sem BOM, LF e quebra final, com MIME text/plain;charset=utf-8. Mostra até 100 detalhes de diagnóstico e 50 linhas de nomes que somam 10.000 unidades, com contagens omitidas. Falha de clipboard oferece cópia manual explícita do código completo. Um BOM inicial é removido para análise; as posições correspondem ao documento original visível. Cancelar encerra o Worker e preserva todos os exemplos. Edição, opções, ordem e modo invalidam saída e exportação.

    O processamento ocorre em Worker local, sem upload, armazenamento ou dados em links. JavaScript e suporte a Worker são necessários. A página nunca importa, compila ou executa o Python gerado.