logo
GeekFormat

JSON in Python

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

  1. Incolla il contenuto JSON nell'editor a sinistra o carica un file
  2. Attendi 400ms per la conversione automatica
  3. Se il JSON è malformato clicca «Ripara JSON»
  4. 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 JSONTipo Python generatoSpiegazione
nullOptional[Any]Tipo di valore null incerto, Optional[Any] come fallback
true / falseboolI booleani JSON sono mappati direttamente a bool Python
42intGli interi JSON sono mappati a int Python
3.14floatI float JSON sono mappati a float Python
"hello"strLe 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 indipendenteGli 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