JSON in Python
Nessun contenuto
Strumento online gratuito JSON in Python che converte automaticamente i dati JSON in classi Python @dataclass con annotazioni di tipo. Le stringhe diventano str, gli interi int, i float float, i booleani bool, gli array List[T], gli oggetti annidati generano dataclass indipendenti, null diventa Optional[Any]. Esecuzione locale nel browser, copia in un clic o scarica model.py. Il codice generato è compatibile con la libreria standard dataclasses di Python 3.7+ e può essere utilizzato direttamente con FastAPI, Django REST Framework, marshmallow, cattrs e altri framework Python comuni, o come struttura dati fortemente tipizzata in Jupyter Notebook.
Raccomandazioni correlate
Informazioni su JSON in Python: Convertire i dati JSON in modelli dataclass eseguibili
JSON in Python è il processo di conversione dei dati in formato JSON in definizioni di tipo @dataclass Python.
@dataclass è una funzionalità della libreria standard introdotta in Python 3.7 (PEP 557).
Il riconoscimento dei tipi è il cuore di JSON in Python.
A differenza di alcuni strumenti online che richiedono il caricamento di JSON su server, tutti i calcoli di questo strumento avvengono nel browser.
Il codice generato può essere inserito e utilizzato direttamente nei progetti Python.
Il codice generato automaticamente è un punto di partenza, non un punto di arrivo.
dataclass vs Pydantic BaseModel vs attrs vs TypedDict.
JSON in Python ha un valore unico nell'ecosistema Data Science.
Altri strumenti opzionali nel'ecosistema Python per la conversione bidirezionale JSON ↔ dataclass: marshmallow, cattrs, pydantic, apischema.
In scenari CLI e automazione.
Prestazioni e manutenibilità con frozen=True e slots=True.
Casi d'uso
- Integrazione REST API: Converti le risposte JSON del backend in @dataclass Python
- Modelli richiesta/risposta FastAPI
- Serializzatori Django Ninja / DRF
- Modellazione dati Scraper
- Definizione feature ML
- Deserializzazione file di configurazione
- Struttura temporanea Jupyter Notebook
- Definizione interfaccia microservizi
- Sviluppo strumenti CLI
- Costruzione dati di test
- Analisi log strutturati
- Migrazione centro di configurazione
- Collaborazione cross-language
- Migrazione database
- Blockchain/Web3
- ETL Data Science
- Validazione schema OpenAPI
- Esempi didattici
- Conversione nomi campo
Come utilizzare
- Incolla il contenuto JSON nell'editor a sinistra o carica un file
- Attendi 400ms per la conversione automatica
- Se il JSON è malformato clicca «Ripara JSON»
- Clicca «Copia» o «Scarica» per salvare il file model.py
Funzionalità
- Conversione locale nel browser: Parsing JSON e generazione codice Python avvengono interamente nel browser, nessun dato viene inviato al server
- Output annotazioni dataclass: Genera classi Python standard decorate con @dataclass
- Riconoscimento automatico dei tipi: str / int / float / bool / List[T] / Dict[str, Any] / Optional[Any]
- Suddivisione automatica oggetti annidati: Gli oggetti JSON annidati generano classi @dataclass indipendenti
- Risoluzione automatica generici List: Gli array JSON vengono convertiti automaticamente in List[T]
- Campi Optional opzionali: I campi null generano Optional[Any] come fallback
- Conversione automatica con debounce 400ms
- Correzione errori JSON in un clic
- Copia e download
- Cronologia input localStorage
- Pannelli reattivi ridimensionabili
- Supporta post-elaborazione Pydantic/attrs/TypedDict
Esempi di codice
Python: Parsing risposta API con requests alla dataclass generata
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}")
print(f"tags: {user.tags}")
if __name__ == "__main__":
main()Python: FastAPI utilizza modello generato per validazione body richiesta (versione 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}
@app.get("/users/{user_id}", response_model=User)
async def get_user(user_id: int) -> User:
return User(id=user_id,name="Alice",email="a@b.com",active=True,address=Address(city="Beijing",zip="100000"),tags=["fastapi","pydantic"])Best Practices
L'esempio JSON dovrebbe contenere valori di esempio per tutti i campi
Fornisci valori di esempio per tutti i campi chiave per ottenere tipi accurati.
JSON complessi preferibilmente suddivisi in più dataclass
Suddividi in più file se il numero di campi supera 50.
Passa a Pydantic BaseModel se è richiesta validazione a runtime
Per progetti FastAPI o validazione richiesta, usa Pydantic.
Combina mypy per controlli di tipo nella fase CI
Aggiungi mypy src/ --strict alla pipeline CI.
Evita valori predefiniti mutabili nei campi dataclass
Usa field(default_factory=list) invece di = [].
Il model.py scaricato dovrebbe essere inserito in un pacchetto models indipendente
Struttura consigliata: src/models/__init__.py + sottomoduli.
JSON sensibili devono essere elaborati localmente
Usa questo strumento (esecuzione locale) per JSON sensibili.
Python 3.10+ attiva slots per risparmiare memoria
Usa @dataclass(slots=True) in Python 3.10+ per prestazioni migliori.
Domande frequenti
Come converto JSON in una dataclass Python?
Incolla il contenuto JSON nell'editor a sinistra o carica un file .json/.txt. Lo strumento chiama automaticamente quicktype-core per generare il codice Python.
Il codice Python generato include annotazioni dataclass?
Sì. Lo strumento utilizza la modalità di rendering just-types di quicktype-core e genera il decoratore @dataclass per Python.
Quali strutture di dati JSON sono supportate?
Supporta tutte le strutture JSON valide: tipi primitivi, array, oggetti annidati di qualsiasi profondità.
Come vengono mappati i tipi di campo JSON ai tipi Python?
Stringhe→str, interi→int, float→float, booleani→bool, array→List[T], oggetti annidati→@dataclass indipendente, null→Optional[Any].
Che tipo viene generato per i valori null?
I valori null in JSON generano Optional[Any].
Gli array vengono convertiti in List?
Sì. Gli array JSON vengono convertiti uniformemente nel generico List[T] di Python.
Come vengono gestiti gli oggetti annidati?
Ogni oggetto annidato genera una classe @dataclass indipendente.
Posso personalizzare il nome della classe generata?
Sì, puoi modificare manualmente i nomi delle classi dopo la generazione.
Il codice generato può essere utilizzato direttamente in un progetto?
Sì, assicurati di avere un ambiente Python 3.7+.
Posso convertire in Pydantic BaseModel invece di dataclass?
Sì, sostituisci @dataclass con class Xxx(BaseModel): e importa da pydantic.
I dati vengono inviati al server? La privacy è sicura?
Esecuzione completamente locale nel browser, nessun dato viene inviato a server.
È richiesta la registrazione o l'accesso?
No. Lo strumento è completamente gratuito, nessuna registrazione richiesta.
Cosa fare se il formato JSON è errato?
Clicca sul pulsante «Ripara JSON» per correggere automaticamente gli errori comuni.
La conversione di JSON di grandi dimensioni è lenta?
Per JSON superiori a 10 MB consigliamo lo strumento CLI quicktype o datamodel-code-generator.
Risoluzione dei problemi
Messaggio «Inserisci dati JSON» o lato destro vuoto
La casella di input a sinistra è vuota. Assicurati di aver incollato contenuto JSON valido.
Messaggio parsing JSON fallito
Cause comuni: virgola finale, virgolette singole invece di doppie, chiavi senza virgolette, commenti JavaScript.
Tipi di campo generati non sufficientemente precisi
Lo strumento deduce i tipi da esempi JSON. Per tipi più precisi modifica manualmente dopo la generazione.
Campo null ha generato Optional[Any] invece di Optional[str]
Poiché JSON null non può dedurre il tipo concreto, lo strumento usa Optional[Any] come fallback.
Messaggio runtime Modulo typing mancante
typing è libreria standard da Python 3.5+, dataclasses da Python 3.7+.
Importazione errore file .py scaricato nel progetto
Possibili cause: versione Python inferiore a 3.7, mypy strict mode, conflitto nomi classe.
Campi JSON snake_case non corrispondono allo stile di denominazione Python
Usa alias_generator di Pydantic o rinomina manualmente i campi.
Pagina si blocca con JSON di grandi dimensioni
Consigliamo di suddividere il JSON o usare lo strumento CLI quicktype.
Errore validazione body richiesta FastAPI (422)
Cambia tipo campo in Optional[Typo] = None, usa Field() per valori predefiniti.
Glossario
- dataclass
- Decoratore della libreria standard Python 3.7+ (@dataclass) per generare automaticamente metodi magici come __init__, __repr__, __eq__.
- Modulo typing
- Libreria standard Python per le annotazioni di tipo, fornisce tipi generici come List, Dict, Optional, Any, Union.
- Optional[T]
- Tipo opzionale del modulo typing, equivalente a Union[T, None].
- List[T]
- Tipo lista generica di Python.
- Any
- Tipo speciale del modulo typing che indica che qualsiasi tipo è accettato.
- Pydantic BaseModel
- Classe base per modelli dati della libreria Pydantic.
- FastAPI
- Framework web Python moderno basato su Pydantic.
- PEP 557
- Python Enhancement Proposal che definisce la sintassi e il comportamento del decoratore dataclass.
- Annotazione di tipo (Type Hint)
- Indicazione di tipo annotata dopo parametri di funzione e variabili in Python.
- PEP 484
- Proposta di standard per le annotazioni di tipo in Python.
- from __future__ import annotations
- Istruzione per la valutazione ritardata delle annotazioni (PEP 563).
- model.py
- Nome file predefinito scaricato da questo strumento.
Tabella di riferimento rapido tipi JSON → tipi Python
Lo strumento deduce automaticamente il tipo Python corrispondente in base al tipo del valore JSON:
| Esempio valore JSON | Tipo Python generato | Spiegazione |
|---|---|---|
null | Optional[Any] | Tipo di valore null incerto, Optional[Any] come fallback |
true / false | bool | I booleani JSON sono mappati direttamente a bool Python |
42 | int | Gli interi JSON sono mappati a int Python |
3.14 | float | I float JSON sono mappati a float Python |
"hello" | str | Le stringhe JSON sono mappate a str Python |
["a","b"] | List[str] | Array di stringhe diventano List[str] |
[1,2,3] | List[int] | Array di interi diventano List[int] |
[{...},{...}] | List[Item] | Array di oggetti generano @dataclass corrispondente |
[] | List[Any] | Array vuoto, Any come fallback |
{...} oggetto annidato | @dataclass indipendente | Gli oggetti annidati generano @dataclass indipendente |
Privacy & Security
Tutte le operazioni di questo strumento JSON in Python avvengono completamente localmente nel browser: parsing JSON, generazione codice Python e download file sono eseguiti tutti lato client tramite JavaScript, nessun contenuto JSON, file caricati o codice generato viene inviato in rete a server.
Authoritative References
- Compressione JSON
- CSV in JSON
- JSON to CSV
- JSON Diff
- JSON Escape / Unescape
- Appiattimento JSON
- Formattatore JSON
- Generatore JSON
- Query JSONPath
- Unire JSON
- Riparare JSON
- Validatore di Schema JSON
- Ordinare JSON
- JSON Stringify
- JSON in HTML
- JSON in Java
- JSON to Markdown
- JSON in SQL
- JSON in TOML
- JSON in TypeScript
- XML in JSON
- JSON in XML
- YAML in JSON
- Da JSON a YAML
- JSON in Python
- JSON in Go
- JSON in Rust
- JSON in Swift
- JSON a C#
- JSON a C++
- JSON to PHP