Il modo migliore per capire JSON è leggere esempi. Questa guida percorre il formato JSON da zero —— oggetti semplici, strutture annidate, array, tipi misti —— e poi mostra pattern JSON del mondo reale che incontrerai in API, file di configurazione e database. Ogni esempio è JSON valido, copiabile-e-incollabile.
Usali come file json di esempio per test, fixture o documentazione —— ogni snippet sotto è un vero esempio json che puoi salvare con estensione .json e caricare direttamente.
L'esempio JSON più semplice
Qualunque valore JSON valido è un documento JSON completo. I documenti JSON più semplici sono primitivi:
"hello" // una stringa
42 // un numero
true // un booleano
null // nullIn pratica, quasi ogni documento JSON che incontri è un oggetto o un array.
Esempio di oggetto JSON
Un oggetto JSON è una raccolta di coppie chiave–valore. Le chiavi devono essere stringhe tra virgolette doppie. I valori possono essere di qualunque tipo JSON.
{
"id": 42,
"name": "Alice Chen",
"email": "alice@example.com",
"age": 30,
"active": true,
"score": 98.6,
"nickname": null
}Nota: l'ordine delle chiavi negli oggetti JSON non è garantito —— i parser possono restituire le chiavi in qualunque ordine.
Esempio di array JSON
Un array JSON è una lista ordinata di valori. Gli elementi possono essere di tipo diverso e l'ordine è sempre preservato.
// Array di stringhe
["apple", "banana", "cherry"]
// Array di numeri
[1, 2, 3, 4, 5]
// Tipi misti
[42, "hello", true, null, { "key": "value" }]
// Array di oggetti (comune nelle risposte API)
[
{ "id": 1, "name": "Alice" },
{ "id": 2, "name": "Bob" },
{ "id": 3, "name": "Carol" }
]Esempio di JSON annidato
Oggetti e array possono essere annidati a qualsiasi profondità. Da qui viene l'espressività del JSON.
{
"user": {
"id": 1001,
"name": "Alice Chen",
"address": {
"street": "123 Main St",
"city": "San Francisco",
"state": "CA",
"zip": "94102"
},
"tags": ["premium", "early-adopter"],
"preferences": {
"notifications": {
"email": true,
"sms": false,
"push": true
},
"theme": "dark"
}
}
}Esempio di formato JSON: risposta di API REST
Una risposta API paginata tipica si presenta così:
{
"status": "success",
"data": {
"page": 1,
"per_page": 10,
"total": 47,
"total_pages": 5,
"items": [
{
"id": "prod_001",
"name": "Wireless Headphones",
"price": 89.99,
"currency": "USD",
"in_stock": true,
"categories": ["electronics", "audio"],
"rating": 4.7,
"reviews_count": 2341
},
{
"id": "prod_002",
"name": "USB-C Hub",
"price": 39.99,
"currency": "USD",
"in_stock": false,
"categories": ["electronics", "accessories"],
"rating": 4.2,
"reviews_count": 891
}
]
},
"meta": {
"request_id": "req_8f3a2c",
"timestamp": "2024-10-15T14:32:00Z"
}
}Esempio di file di configurazione JSON
I file di configurazione in JSON sono comuni nel tooling JavaScript. Ecco una struttura tipica di package.json:
{
"name": "my-app",
"version": "1.0.0",
"description": "A sample application",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "jest",
"build": "tsc"
},
"dependencies": {
"express": "^4.18.2",
"lodash": "^4.17.21"
},
"devDependencies": {
"typescript": "^5.0.0",
"jest": "^29.0.0"
},
"engines": {
"node": ">=18.0.0"
}
}Formato dati JSON: data e ora
JSON non ha un tipo data nativo. Le date sono rappresentate come stringhe. ISO 8601 è il formato universalmente accettato:
{
"created_at": "2024-10-15T14:32:00Z", // datetime UTC
"updated_at": "2024-10-15T14:32:00+08:00", // con offset di fuso
"birth_date": "1990-06-21", // solo data
"meeting_time": "09:00:00" // solo ora
}In alternativa, alcuni sistemi usano timestamp Unix (secondi dall'epoca) come numeri:
{
"created_at": 1728999120,
"expires_at": 1761057600
}JSON con campi opzionali e nulli
Usa null per i campi che esistono ma non hanno valore. Ometti del tutto i campi opzionali e assenti.
{
"id": 5,
"name": "Bob",
"email": "bob@example.com",
"phone": null, // esiste ma non impostato
"company": "Acme Corp",
"title": null // esiste ma non impostato
// "fax" è del tutto omesso —— non applicabile
}Esempi di errori JSON (e come correggerli)
Questi sono errori di formattazione JSON comuni:
// ❌ apici singoli (non è JSON valido)
{ 'name': 'Alice' }
// ✅ Correzione: usa le virgolette doppie
{ "name": "Alice" }
// ❌ Chiave senza virgolette
{ name: "Alice" }
// ✅ Correzione: quota la chiave
{ "name": "Alice" }
// ❌ Virgola finale
{ "a": 1, "b": 2, }
// ✅ Correzione: rimuovi la virgola finale
{ "a": 1, "b": 2 }
// ❌ Commento JavaScript
{ "debug": true // abilita logging }
// ✅ Correzione: rimuovi il commento
{ "debug": true }
// ❌ Booleano in stile Python
{ "active": True }
// ✅ Correzione: usa il minuscolo
{ "active": true }Se la tua stringa JSON ha uno qualsiasi di questi errori, incollala in JSON Fix per ripararla e formattarla automaticamente.
Esempio di JSON Lines (NDJSON, jsonlines)
Per log in streaming, dataset ML e API in bulk, la convenzione è un valore JSON per riga separati da \n. Il formato ha due nomi —— jsonlines (da jsonlines.org) e NDJSON —— ma la spec è la stessa:
{"event":"login","user":"ada","at":"2026-05-28T09:00:00Z"}
{"event":"view","user":"ada","page":"/dashboard"}
{"event":"logout","user":"ada","at":"2026-05-28T09:42:00Z"} Ogni riga si parsa indipendentemente. Non fare JSON.parse() sull'intero file —— splitta sull'a-capo e parsa riga per riga.
Esempio di risposta OpenAPI
Una spec OpenAPI definisce le risposte usando una forma in stile JSON Schema:
{
"openapi": "3.1.0",
"paths": {
"/users/{id}": {
"get": {
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["id", "email"],
"properties": {
"id": { "type": "integer" },
"email": { "type": "string", "format": "email" }
}
}
}
}
}
}
}
}
}
}Esempi solo-data e solo-ora
ISO 8601 definisce anche forme di sola data e sola ora —— utili quando l'orario del giorno o la data non hanno davvero senso:
{
"birth_date": "1815-12-10", // solo data
"office_hours": "09:00:00", // solo ora
"started_at": "2026-05-28T09:00:00Z" // datetime completo, per contrasto
}Esempio di GeoJSON
GeoJSON è un formato standard per dati geografici basato su JSON:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-122.4194, 37.7749]
},
"properties": {
"name": "San Francisco",
"country": "US",
"population": 873965
}
}Domande frequenti
Qual è un esempio di JSON valido?
Il più semplice è un singolo primitivo come 42 o "hello", ma la maggior parte del JSON reale è un oggetto come { "name": "Alice", "age": 30, "active": true } o un array di tali oggetti.
Come si rappresentano le date in JSON?
JSON non ha un tipo data. Le date sono salvate come stringhe —— ISO 8601 ("2024-10-15T14:32:00Z") è la scelta universale —— o come timestamp Unix numerici.
Come rappresento un valore mancante in JSON?
Usa null per un campo che esiste ma non ha valore, e ometti del tutto la chiave per i campi che non si applicano. JSON non ha undefined.
Come si presenta il JSON annidato?
Oggetti e array possono contenere altri oggetti e array a qualsiasi profondità —— vedi gli esempi annidato e REST API sopra. Per le regole sottostanti vedi Cos'è JSON?
Prova questi esempi
Copia uno qualsiasi degli esempi sopra e incollalo negli strumenti qui sotto per esplorare i dati:
- JSON Fix —— formatta, valida e ripara JSON
- JSON Diff —— confronta due esempi JSON affiancati
- Cos'è JSON? —— guida completa ai sei tipi di dato e alla grammatica JSON
- Come formattare JSON —— pretty-print JSON in JavaScript, Python, jq e nel browser
- JSON Stringify —— converti un valore JSON in un literal di stringa escaped