JSON a Python
Sense contingut
Eina en línia gratuïta JSON a Python que converteix automàticament dades JSON en classes Python @dataclass amb anotacions de tipus. Les cadenes es converteixen en str, els enters en int, els floats en float, els booleans en bool, els arrays en List[T], els objectes anidats generen dataclasses independents, null es converteix en Optional[Any]. Execució local al navegador, copia en un clic o descarrega model.py.
Relacionats
Sobre JSON a Python: Convertir dades JSON en models dataclass executables
JSON a Python és el procés de convertir dades en format JSON en definicions de tipus @dataclass Python.
@dataclass és una funció de la biblioteca estàndard introduïda a Python 3.7 (PEP 557).
El reconeixement de tipus és el cor de JSON a Python.
A diferència d'algunes eines en línia, tots els càlculs d'aquesta eina es fan al navegador.
El codi generat es pot utilitzar directament en projectes Python.
El codi generat automàticament és un punt de partida, no un punt final.
dataclass vs Pydantic BaseModel vs attrs vs TypedDict.
JSON a Python té valor únic a l'ecosistema Data Science.
Altres eines opcionals a l'ecosistema Python: marshmallow, cattrs, pydantic, apischema.
En escenaris CLI i automatització.
Rendiment i mantenibilitat amb frozen=True i slots=True.
Casos d'ús
- Integració REST API
- Models petició/resposta FastAPI
- Serialitzadors Django Ninja / DRF
- Modelatge de dades Scraper
- Definició de features ML
- Deserialització de fitxers de configuració
- Estructura temporal Jupyter Notebook
- Definició d'interfície de microserveis
- Desenvolupament d'eines CLI
- Construcció de dades de prova
- Anàlisi de logs estructurats
- Migració de centre de configuració
- Col·laboració cross-language
- Migració de bases de dades
- Blockchain/Web3
- ETL Data Science
- Validació d'esquema OpenAPI
- Exemples didàctics
- Conversió de noms de camp
Com usar-ho
- Enganxa el contingut JSON a l'editor de l'esquerra o carrega un fitxer
- Espera 400ms per a la conversió automàtica
- Si el JSON està mal format fes clic a «Repara JSON»
- Fes clic a «Copiar» o «Descarrega» per guardar model.py
Característiques
- Conversió local al navegador
- Sortida amb anotacions dataclass
- Reconeixement automàtic de tipus
- Divisió automàtica d'objectes anidats
- Resolució automàtica de genèrics List
- Camps Optional opcionals
- Conversió automàtica amb debounce de 400ms
- Correcció d'errors JSON en un clic
- Copiar i descarregar
- Historial d'entrada localStorage
- Panells responsius redimensionables
- Suporta postprocessament Pydantic/attrs/TypedDict
Exemples de codi
Python: Parsing resposta API amb requests a dataclass generada
python# requirements.txt
# requests>=2.31
from dataclasses import dataclass
from typing import Any, List, Optional
import json
import requests
@dataclass
class Address:
city: str
zip: str
@dataclass
class User:
id: int
name: str
active: bool
address: Address
tags: List[str]
label: Optional[Any] = None
def main() -> None:
resp = requests.get("https://api.example.com/users/1", timeout=10)
resp.raise_for_status()
user: User = User(**resp.json())
print(f"{user.name} lives in {user.address.city}")
if __name__ == "__main__":
main()Python: FastAPI utilitza model generat per a validació de body (versió Pydantic)
python# pip install fastapi 'pydantic>=2'
from typing import List, Optional
from fastapi import FastAPI
from pydantic import BaseModel
class Address(BaseModel):
city: str
zip: str
class User(BaseModel):
id: int
name: str
email: str
active: bool = True
address: Address
tags: List[str] = []
label: Optional[str] = None
app = FastAPI()
@app.post("/users")
async def create_user(user: User) -> dict:
return {"id": user.id, "name": user.name}Best Practices
L'exemple JSON ha de contenir valors d'exemple per a tots els camps
Proporciona valors d'exemple per a camps clau per obtenir tipus precisos.
JSON complexos preferiblement dividits en múltiples dataclasses
Divideix en múltiples fitxers si el nombre de camps supera 50.
Canvia a Pydantic BaseModel si cal validació en runtime
Per a projectes FastAPI o si cal validació, utilitza Pydantic.
Combina mypy per a comprovacions de tipus en la fase CI
Afegeix mypy src/ --strict al pipeline CI.
Evita valors per defecte mutables en camps dataclass
Utilitza field(default_factory=list) en lloc de = [].
El model.py descarregat s'ha de col·locar en un paquet models independent
Estructura recomanada: src/models/__init__.py + submòduls.
JSON sensibles s'han de processar localment
Utilitza aquesta eina (execució local) per a JSON sensibles.
Python 3.10+ activa slots per estalviar memòria
Utilitza @dataclass(slots=True) a Python 3.10+ per a millor rendiment.
Preguntes freqients
Com converteixo JSON a una dataclass Python?
Enganxa el contingut JSON a l'editor de l'esquerra o carrega un fitxer.
El codi Python generat inclou anotacions dataclass?
Sí, genera el decorador @dataclass i els imports necessaris.
Quines estructures de dades JSON són compatibles?
Compatibilitat amb totes les estructures JSON vàlides: tipus primitius, arrays, objectes anidats.
Com es mapegen els tipus de camp JSON als tipus Python?
Cadenes→str, enters→int, floats→float, booleans→bool, arrays→List[T], objectes anidats→@dataclass, null→Optional[Any].
Quin tipus es genera per als valors null?
Els valors null generen Optional[Any].
Els arrays es converteixen a List?
Sí, els arrays JSON es converteixen a List[T].
Com es tracten els objectes anidats?
Cada objecte anidat genera una classe @dataclass independent.
Puc personalitzar el nom de la classe generada?
Sí, pots modificar manualment els noms després de la generació.
El codi generat es pot utilitzar directament en un projecte?
Sí, assegura't de tenir un entorn Python 3.7+.
Puc convertir a Pydantic BaseModel en lloc de dataclass?
Sí, substitueix @dataclass per class Xxx(BaseModel): i importa des de pydantic.
Les dades s'envien al servidor? La privacitat és segura?
Execució completament local al navegador, cap dada s'envia a servidors.
Cal registrar-se o iniciar sessió?
No. L'eina és completament gratuïta, sense registre.
Què fer si el format JSON és incorrecte?
Fes clic al botó «Repara JSON» per corregir errors comuns automàticament.
Convertir JSON grans és lent?
Per a JSON majors de 10MB recomanem l'eina CLI quicktype.
Solució de problemes
Missatge «Introdueix dades JSON» o costat dret buit
L'entrada és buida. Assegura't d'haver enganxat JSON vàlid.
Missatge parsing JSON fallit
Causes habituals: coma final, cometes simples en lloc de dobles, claus sense cometes, comentaris JavaScript.
Tipus de camp generats no prou precisos
Modifica els tipus manualment després de la generació.
Camp null ha generat Optional[Any] en lloc d'Optional[str]
El tipus concret no es pot deduir de null.
Error d'importació del fitxer .py descarregat
Possibles causes: versió Python inferior a 3.7, conflictes de noms.
Camps JSON snake_case no coincideixen amb l'estil Python
Utilitza alias_generator de Pydantic o reanomena manualment.
La pàgina es congela amb JSON molt grans
Recomanem dividir el JSON o utilitzar l'eina CLI.
Error de validació de body FastAPI (422)
Canvia el tipus de camp a Optional[Typo] = None.
Glossari
- dataclass
- Decorador de la biblioteca estàndard Python 3.7+ (@dataclass) per generar automàticament màgics.
- Mòdul typing
- Biblioteca estàndard Python per a anotacions de tipus.
- Optional[T]
- Tipus opcional del mòdul typing.
- List[T]
- Tipus de llista genèrica de Python.
- Any
- Tipus especial que accepta qualsevol tipus.
- Pydantic BaseModel
- Classe base per a models de dades de la biblioteca Pydantic.
- FastAPI
- Framework web Python modern basat en Pydantic.
- PEP 557
- Proposta que defineix la sintaxi del decorador dataclass.
- Anotació de tipus (Type Hint)
- Indicació de tipus anotada després de paràmetres i variables.
- PEP 484
- Proposta d'estàndard per a anotacions de tipus a Python.
- from __future__ import annotations
- Instrucció per avaluació retardada d'anotacions (PEP 563).
- model.py
- Nom de fitxer per defecte descarregat per aquesta eina.
Taula de referència ràpida tipus JSON → tipus Python
L'eina dedueix automàticament el tipus Python corresponent:
| Exemple valor JSON | Tipus Python generat | Explicació |
|---|---|---|
null | Optional[Any] | Valor null incert |
true / false | bool | Booleans JSON → bool |
42 | int | Enters JSON → int |
3.14 | float | Floats JSON → float |
"hello" | str | Cadenes JSON → str |
["a","b"] | List[str] | Arrays de cadenes → List[str] |
[1,2,3] | List[int] | Arrays d'enters → List[int] |
[{...},{...}] | List[Item] | Arrays d'objectes → List[Item] |
[] | List[Any] | Array buit |
{...} objecte anidat | @dataclass independent | Objectes anidats generen @dataclass independent |
Privacy & Security
Totes les operacions d'aquesta eina JSON a Python passen completament de forma local al navegador: el parsing JSON, la generació de codi Python i la descàrrega de fitxers s'executen totes al costat del client mitjançant JavaScript, cap contingut JSON, fitxers carregats o codi generat s'envia per la xarxa a servidors.
Authoritative References
- Comprimir JSON
- CSV a JSON
- JSON a CSV
- JSON Diff
- JSON Escape / Unescape
- Aplanar JSON
- JSON Formatter
- Generador de JSON
- Consulta JSONPath
- Combinar JSON
- Reparació JSON
- Validador d'Esquema JSON
- Ordenar JSON
- JSON Stringify
- JSON a HTML
- JSON a Java
- JSON a Markdown
- JSON a SQL
- JSON a TOML
- JSON a TypeScript
- XML a JSON
- Converteix JSON a XML
- YAML a JSON
- JSON → YAML
- JSON a Python
- JSON a Go
- JSON a Rust
- JSON a Swift
- JSON a C#
- JSON a C++
- JSON a PHP