JSON, JavaScript Object Notation, e un formato di testo per rappresentare dati strutturati: oggetti, liste, stringhe, numeri, booleani e un valore nullo, scritto in una sintassi abbastanza piccola da essere letta in un pomeriggio e abbastanza rigida affinche tutti i linguaggi la analizzino allo stesso modo. Non e legato a JavaScript nonostante il nome. Tutti i linguaggi principali includono un analizzatore JSON nella loro libreria standard o con un installazione con una riga, che e il motivo reale per cui ha vinto: non perche e elegante, ma perche e noioso e portabile.
Come appare
{
"nome": "Ada Lovelace",
"eta": 36,
"eImpiegata": true,
"competenze": ["matematica", "scrittura"],
"indirizzo": { "citta": "Londra", "paese": "UK" },
"soprannome": null
}
Un oggetto e { } contenente coppie chiave valore, un array e [ ]
contenente una lista ordinata, e tutto il resto si annida all interno di
quei due contenitori. Questa e tutta la forma di JSON: due tipi di contenitore
e qualche tipo di valore al loro interno.
I sei tipi di valore, ne di piu ne di meno
Un valore JSON e una stringa, un numero, un booleano (true o false),
null, un array o un oggetto. Altro non esiste nella specifica. Non c e
un tipo data, non c e undefined, non c e una sintassi per i commenti, e
non c e un modo per rappresentare una funzione. Una data diventa una stringa
in un formato concordato da entrambe le parti (generalmente ISO 8601), e un
valore che sarebbe undefined in JavaScript viene semplicemente omesso
dall oggetto invece di essere scritto. [Tipi di Dati JSON Spiegati](/blog/json-
data-types) dettaglia ciascuno dei sei in maggiore profondita, inclusi i casi
limite che fanno cadere un analizzatore naif.
Perche ha sostituito XML per la maggior parte delle API
XML avvolge ogni valore in tag di apertura e chiusura, supporta attributi oltre a quello, e necessita di un linguaggio di schema separato per descrivere che cosa e valido. I contenitori JSON sono di due caratteri ciascuno, i valori sono tipizzati senza un tag che lo dica, e la forma del documento riflette la forma della struttura dati che un programma usa effettivamente; analizzare un documento JSON nel letterale oggetto nativo di un linguaggio e quasi una copia diretta, dove un documento XML di solito richiede il proprio modello oggetto tradotto sopra. Questa e una differenza reale e misurabile in dimensione del payload e costo di analisi, ed e per questo che le API REST si sono stabilite su JSON una volta che e esistito. Vedi JSON vs XML per un confronto piu vicino e specifico.
Dove lo incontrerai davvero
- Risposte e richieste di API REST. Il formato dominante per i corpi
Content-Type: application/json, in entrambe le direzioni. - File di configurazione.
package.json,tsconfig.json, e la maggior parte delle configurazioni degli strumenti moderni, anche se YAML e comune anche qui; vedi JSON vs YAML per quando ognuno e preferibile. - Database NoSQL e di documenti. I documenti MongoDB sono memorizzati come BSON, un sovrainsieme binario di JSON, e la maggior parte dei database di documenti accetta e restituisce JSON direttamente.
- Linee di log e pipeline di dati, un oggetto JSON per riga, un formato generalmente chiamato NDJSON. Casi d Uso JSON Comuni percorre questo e gli altri con forme reali.
- Archiviazione del browser.
localStoragememorizza solo stringhe, quindi qualsiasi cosa strutturata passa daJSON.stringifyin entrata e daJSON.parsein uscita.
Lavorare con
Incolla un documento nel Formatter JSON per stamparlo formattato, o nel Validatore JSON per verificarlo rispetto alla specifica con una riga e una colonna sul carattere esatto che ha fallito. Nessuno carica quello che incollate; entrambi girano interamente nel vostro browser. Una volta che le basi hanno senso, il Scheda di Riferimento JSON e un riferimento di una pagina per le regole di sintassi sopra, da tenere aperta in un scheda o da scaricare per riferimento offline.