Ir para o conteúdo
Totalmente local

JSON para classe de dados Python

Converta um exemplo JSON em classes Python tipadas — dataclass, Pydantic, TypedDict ou NamedTuple.

Entrada
Saída

JSON para classe de dados Python

Cole JSON ou uma matriz e esta ferramenta infere automaticamente tipos e gera classes Python com anotações completas. Escolha o estilo: @dataclass, Pydantic BaseModel para validação, TypedDict para código baseado em dicionários ou NamedTuple para registros imutáveis. Objetos aninhados tornam-se suas próprias classes na ordem correta; objetos com formas idênticas reutilizam uma classe em vez de duplicar.

As opções controlam se o código é conservador ou moderno. "Opcional para campos nulos" transforma null em tipos Optional em vez de None nú; "Adicionar valores padrão" permite omitir campos ao construir instâncias. "Pseudónimo para nomes de campo inválidos" trata chaves JSON inválidas e preserva a chave original através de metadados de campo ou Pydantic Field(alias=...). "Usar list[T] em vez de List[T]" alterna entre genéricos modernos de PEP 585 e typing.List antigo, enquanto anotações futuras habilitam sintaxe X | None / X | Y.

A inferência distingue strings, inteiros, floats e booleanos, une conteúdo de matriz misto em Union e dá a arrays raiz um nome RootItem com alias Root = list[RootItem]. Números sem ponto decimal são lidos como int — não há forma de recuperar "36.0" após análise. Tudo é executado localmente; seu JSON e código Python gerado nunca deixam seu dispositivo.

FAQ

Quais estilos de saída são suportados?
Quatro: @dataclass (padrão da biblioteca padrão), Pydantic BaseModel (para validação e análise JSON), TypedDict (anotações de tipo sobre um dicionário simples sem classe runtime) e NamedTuple (registros imutáveis semelhantes a tuplas).
Como objetos aninhados e matrizes de objetos são tratados?
Cada forma de objeto distinta torna-se sua própria classe, nomeada após o campo que a contém e definida antes da classe que a referencia. Objetos com um conjunto idêntico de campos e tipos reutilizam uma classe em vez de duplicar — uma matriz de registros com formas idênticas gera uma única classe de item.
O que acontece com chaves JSON que não são identificadores Python válidos?
Elas são limpas para um nome de atributo válido (por exemplo, "first-name" → first_name). Com "Pseudónimo para nomes de campo inválidos" ativado, a chave original é preservada através de um pseudónimo nativo (metadados de campo em dataclass, Field(alias=...) em Pydantic) ou um comentário à direita para TypedDict e NamedTuple, que não têm mecanismo de pseudónimo integrado.
Consegue distinguir int e float de forma fiável?
Classifica cada número dependendo se tem uma parte fracionária na sua amostra, mas JSON em si não distingue int de float para números inteiros — um valor enviado como 36.0 é indistinguível de 36 após análise, portanto é lido como int.
O meu JSON é enviado para algum lugar?
Não. Análise e geração de código executam completamente no seu navegador — o JSON que cola e o Python que produz nunca deixam o seu dispositivo.