Altro
Cos'è JSON e perché dovrei usarlo?
Ho guardato su wikipedia e su Google e ho letto la documentazione ufficiale, ma non sono ancora arrivato al punto in cui ho veramente capito cos'è JSON e perché lo dovrei usare.
Ho costruito applicazioni usando PHP, MySQL e Javascript / HTML per un po', e se JSON può fare qualcosa per rendere la mia vita più facile o il mio codice migliore o la mia interfaccia utente migliore, allora mi piacerebbe saperlo. Qualcuno può darmi una spiegazione succinta?
524
3
JSON (JavaScript Object Notation) è un formato leggero usato per lo scambio di dati. È basato su un sottoinsieme del linguaggio JavaScript (il modo in cui gli oggetti sono costruiti in JavaScript). Come dichiarato nel MDN, alcuni JavaScript non sono JSON, e alcuni JSON non sono JavaScript. Un esempio di dove questo viene usato sono le risposte dei servizi web. Nei 'vecchi' giorni, i servizi web usavano XML come formato dati principale per trasmettere i dati di ritorno, ma da quando è apparso JSON (Il formato JSON è specificato in RFC 4627 di Douglas Crockford), è stato il formato preferito perché è molto più leggero Puoi trovare molte altre informazioni sul sito web JSON ufficiale. JSON è costruito su due strutture:
Un elenco ordinato di valori. Nella maggior parte dei linguaggi, questo è realizzato come un array, un vettore, una lista o una sequenza.
Struttura JSON
JSON è una lista di valori ordinati;
Ecco un esempio di dati JSON:
JSON in JavaScript
JSON (in Javascript) è una stringa! La gente spesso assume che tutti gli oggetti Javascript siano JSON e che JSON sia un oggetto Javascript. Questo non è corretto. In Javascript
var x = {x:y}
è non JSON, questo è un oggetto Javascript. I due non sono la stessa cosa. L'equivalente JSON (rappresentato nel linguaggio Javascript) sarebbevar x = '{"x":"y"}'
.x
è un oggetto di tipo stringa** e non un oggetto a sé stante. Per trasformarlo in un oggetto Javascript a tutti gli effetti devi prima analizzarlo,var x = JSON.parse('{"x":"y"}');
,x
è ora un oggetto ma non è più JSON. Vedi Javascript object Vs JSONQuando si lavora con JSON e JavaScript, si può essere tentati di usare la funzione
eval
per valutare il risultato restituito nel callback, ma questo non è suggerito poiché ci sono due caratteri (U+2028 & U+2029) validi in JSON ma non in JavaScript (leggi di più su questo qui). Pertanto, si deve sempre cercare di utilizzare lo script di Crockford che verifica la presenza di un JSON valido prima di valutarlo. Il link alla spiegazione dello script si trova qui e qui c'è un link diretto al file js. Tutti i principali browser al giorno d'oggi hanno una propria implementazione per questo. Esempio su come usare il parser JSON (con il json dello snippet di codice sopra):Il parser JSON offre anche un altro metodo molto utile,
stringify
. Questo metodo accetta un oggetto JavaScript come parametro, e restituisce una stringa in formato JSON. Questo è utile per quando si vuole inviare dati al server:I due metodi precedenti (
parse
estringify
) prendono anche un secondo parametro, che è una funzione che sarà chiamata per ogni chiave e valore ad ogni livello del risultato finale, e ogni valore sarà sostituito dal risultato della funzione inserita. (Maggiori informazioni su questo qui) Btw, per tutti voi là fuori che pensate che JSON sia solo per JavaScript, guardate questo post che spiega e conferma il contrario.Riferimenti
JSON è JavaScript Object Notation. È un modo molto più compatto di trasmettere insiemi di dati attraverso connessioni di rete rispetto a XML. Suggerisco di usare JSON in qualsiasi applicazione di tipo AJAX dove XML sarebbe altrimenti l'opzione raccomandata. La verbosità di XML aumenterà il tempo di download e il consumo di banda ($$$). Si può ottenere lo stesso effetto con JSON e il suo mark-up è quasi esclusivamente dedicato ai dati stessi e non alla struttura sottostante.
la risposta breve comune è: se state usando AJAX per fare richieste di dati, potete facilmente inviare e restituire oggetti come stringhe JSON. Le estensioni disponibili per Javascript supportano le chiamate toJSON() su tutti i tipi di javascript per inviare dati al server in una richiesta AJAX. Le risposte AJAX possono restituire oggetti come stringhe JSON che possono essere convertite in oggetti Javascript con una semplice chiamata eval, ad esempio se la funzione AJAX someAjaxFunctionCallReturningJson restituisce
potreste scrivere in Javascript
JSON può anche essere usato per i payloads dei servizi web e così via, ma è davvero conveniente per i risultati AJAX.