Che cos'è JSON? Una Guida Completa per Principianti
Che cos'è JSON?
JSON (JavaScript Object Notation) è un formato di interscambio dati leggero e basato su testo, progettato per essere facile da leggere e scrivere per gli esseri umani e facile da analizzare e generare per le macchine. Deriva originariamente dalla sintassi degli oggetti letterali di JavaScript, ma da allora è diventato uno standard indipendente dal linguaggio, supportato praticamente da ogni linguaggio di programmazione.
Oggi JSON è il formato dominante per lo scambio di dati sul web. Alimenta le API REST, i file di configurazione, i database NoSQL, la comunicazione delle app mobili e innumerevoli altri sistemi basati sui dati. La sua semplicità e onnipresenza lo hanno reso la scelta predefinita per gli sviluppatori di tutto il mondo.
Regole di sintassi JSON
JSON segue un insieme rigoroso e minimale di regole di sintassi:
- I dati sono strutturati in coppie chiave/valore
- Tutte le chiavi devono essere stringhe tra virgolette doppie (le virgolette singole non sono consentite)
- Le coppie chiave/valore sono separate da due punti (
:) - Le coppie sono separate da virgole (
,) - Le parentesi graffe
{}racchiudono gli oggetti - Le parentesi quadre
[]racchiudono gli array - Non sono consentite virgole finali
- Nei JSON rigorosi non sono consentiti commenti
Esempio di JSON valido
{
"name": "Jane Smith",
"age": 28,
"isEmployed": true,
"skills": ["JavaScript", "Python", "SQL"],
"address": {
"street": "123 Main Street",
"city": "San Francisco",
"zipCode": "94102"
},
"phoneNumbers": null
}
Esempi di JSON non valido
Virgola finale (non valida):
{
"name": "Jane",
"age": 28,
}
Chiave tra virgolette singole (non valida):
{ 'name': 'Jane' }
Chiave senza virgolette (non valida):
{ name: "Jane" }
Tipi di dati JSON
JSON supporta esattamente sei tipi di dati:
| Tipo | Descrizione | Esempio |
|------|-------------|---------|
| Stringa | Testo Unicode tra virgolette doppie | "Hello, world!" |
| Numero | Intero o a virgola mobile | 42, 3.14, -7, 1.5e10 |
| Booleano | Vero o falso logico | true, false |
| Null | Valore vuoto intenzionale | null |
| Oggetto | Collezione non ordinata di coppie chiave/valore | {"key": "value"} |
| Array | Elenco ordinato di valori | [1, 2, 3] |
Notoriamente assenti: date, timestamp, dati binari, undefined e funzioni non hanno una rappresentazione JSON nativa. Le date vengono tipicamente memorizzate come stringhe ISO 8601 per convenzione.
JSON vs altri formati di dati
JSON convive con diversi altri formati di interscambio dati, ciascuno con i propri compromessi:
- JSON vs XML: JSON è più conciso e più veloce da analizzare. XML supporta attributi, namespace e schemi (XSD) ma è significativamente più verboso.
- JSON vs YAML: YAML è più leggibile per l'uomo per i file di configurazione, con supporto per i commenti, ma la sua sintassi sensibile all'indentazione può essere soggetta a errori. JSON è più portabile e ha una validazione più rigorosa.
- JSON vs CSV: CSV è solo piatto e tabellare. JSON supporta gerarchie annidate e tipi di dati misti.
- JSON vs Protocol Buffers: Protobuf è più piccolo e più veloce per la comunicazione macchina-a-macchina ma richiede una definizione dello schema e non è leggibile dall'uomo.
Perché JSON domina le API web
Diversi fattori spiegano il predominio di JSON nella progettazione delle API web:
- Onnipresenza linguistica -- Ogni linguaggio importante ha un parser JSON nativo o ben mantenuto, eliminando gli attriti di integrazione.
- Supporto nativo nei browser --
JSON.parse()eJSON.stringify()di JavaScript rendono JSON la scelta naturale per le applicazioni web. - Banda minima -- La sintassi leggera di JSON produce payload più piccoli di XML, riducendo latenza e costi di banda.
- Leggibilità umana -- Gli sviluppatori possono ispezionare, eseguire il debug e scrivere a mano dati JSON senza strumenti speciali.
- Schema flessibile -- A differenza di formati rigidi come XML Schema o Protocol Buffers, JSON si adatta a strutture dati in evoluzione senza ricompilazione.
Casi d'uso comuni di JSON
- API REST e GraphQL -- Il formato standard per i payload di richiesta e risposta.
- File di configurazione -- Usati da strumenti come ESLint, Prettier, webpack e VS Code.
- Database NoSQL -- MongoDB e CouchDB memorizzano i dati come documenti simili a JSON.
- Serializzazione dei dati -- Strutturare i dati per l'archiviazione, il trasferimento o la cache.
- Comunicazione in tempo reale -- Messaggi JSON nei flussi WebSocket e nei Webhook.
- Aggregazione dei log -- Strumenti di logging strutturato come Winston, Logstash e Datadog usano JSON per voci di log ricercabili e filtrabili.
Validazione e formattazione JSON
Quando si lavora con JSON, la validazione è fondamentale. Un singolo errore di sintassi -- una virgola finale, una virgoletta mancante o un carattere non escapato -- può rompere un'intera integrazione API o un file di configurazione. L'ispezione manuale non è affidabile, soprattutto per documenti JSON di grandi dimensioni.
Come validare JSON
La validazione segue tipicamente questi passaggi:
- Analizza la stringa JSON usando un parser standard come
JSON.parse()in JavaScript o l'equivalente nel linguaggio che preferisci. - Controlla gli errori di sintassi -- il parser lancerà un errore alla prima violazione con un messaggio che indica la posizione del problema.
- Correggi gli errori in modo iterativo -- poiché i parser si fermano al primo errore, correggilo e rivalida finché il documento non passa.
La maggior parte degli strumenti JSON online combina la validazione con la formattazione. Incolla il tuo JSON e lo strumento controlla istantaneamente la sintassi, evidenzia gli errori con numeri di riga e colonna e produce un output pulito e indentato. Questo è significativamente più veloce che eseguire il debug con eccezioni del parser nel tuo codice.
Suggerimenti per lavorare con JSON
- Valida sempre prima dell'uso -- Non dare mai per scontato che un JSON scritto a mano sia valido.
- Usa un linter -- Strumenti come ESLint con plugin JSON intercettano gli errori prima che raggiungano la produzione.
- Preferisci le librerie JSON -- Genera JSON con librerie di serializzazione piuttosto che con la concatenazione di stringhe per evitare sottili errori di sintassi.
- Imposta header Content-Type rigorosi -- Per le API, imponi
Content-Type: application/jsonper rifiutare subito le richieste malformate.
Usa un validatore e formattatore JSON online gratuito per controllare istantaneamente la sintassi del tuo JSON, individuare gli errori e formattare i tuoi dati per la leggibilità. Che tu sia un principiante che impara le basi o uno sviluppatore esperto che esegue il debug di un'API di produzione, il nostro strumento Formattatore & Validatore JSON ti aiuta a lavorare con i dati JSON in modo efficiente.