2009-11-08 2 views
5

Puoi spiegarlo in parole semplici?Che cosa è JSON, puoi spiegarlo a un principiante?

Il meglio con uno script demo.

+11

Cosa c'è di sbagliato con la Descripton su http://json.org/? – tangens

+0

prova con quelli presentati lì ... ha 4 url ​​tutti con le descrizioni e per i principianti ... fai pratica da solo prima e leggendo quelli –

+1

Notazione oggetto JavaScript – dlamblin

risposta

18

JSON è un modo di condividere i dati (di solito tra il browser e un server).

JavaScript permette per due modo per archiviare collezioni di valori:

//arrays: 
[value, value, value] 
//objects: 
{key:value, key:value, key:value} 

Ad un certo punto, un guru noto come Doug si rese conto che di solito è più efficiente per inviare i dati a JavaScript già configurato come un oggetto. [Piuttosto che PHP che invia stringhe delimitate da virgole, post-dati, XML o anche HTML, che devono essere accuratamente analizzati dal JavaScript].

Così ha chiamato quell'idea JSON, ha scritto una specifica per questo, e lo standard è nato.

Per esempio, diciamo che lo script login.php dovrebbe restituire il nome degli utenti, messaggi totali, e giorni da quando registra:

//XML 
"<xml..><details>\ 
    <user>Jim</user><posts>239</posts><since>Jan09</since>\ 
</details>" 
//POSTData 
"user=Jim&posts=239&since=Jan09" 
//JSON 
"{user:'Jim', posts:239, since:'Jan09'}" 

L'ultimo può essere facilmente analizzato da JS (utilizzando eval), e i dettagli possono essere utilizzati in modo intuitivo:

var user = details.user; 

EDIT:

È stato correttamente osservato che per essere valida JSON, tutte le stringhe devono essere il doppio citato. Questo è stato fatto per impedire a JS di gracidare parole chiave riservate (in JS non si possono usare certe parole, come class, a meno che non vengano citate. Quindi {class:'mike'} non può essere usato).

Va inoltre sottolineato che PHP 5.2+ ha delle funzioni che possono essere utilizzate per creare o analizzare JSON:

<?php 
    $arr = array ('a'=>'ay','b'=>'bee','c'=>'cee'); 
    echo json_encode($arr); //outputs {"a":"ay","b":"bee","c":"cee"} 
?> 

La funzione json_decode funzionerà solo se il JSON è valido, quindi a volte è importante per ottenere quelle doppie virgolette giuste.

+1

L'esempio non è JSON valido, i set di chiavi devono avere virgolette. – truppo

+0

Sono consapevole, ma ho sentito che le citazioni aggiuntive confondono il problema. Crockford ha detto che potrebbe abbandonare il requisito delle quotazioni dallo standard quando si utilizza Javascript 1.3+, quindi non è una scorciatoia del tutto ingiusta. – SamGoody

+0

Inoltre, dovrei raddoppiare i tasti e le chiavi per essere validi, il che mi richiederebbe solo il singlequoting dell'intera stringa, il che sarebbe strano. – SamGoody

1

JSON è codice sorgente Javascript che crea una struttura dati.

12

È fondamentalmente un modo di descrivere gli oggetti nel testo: un formato di serializzazione basato su testo. Tuttavia, la bellezza di questo è che è anche solo normale JavaScript. La sintassi di JavaScript consente di inizializzare gli oggetti in un formato piuttosto conciso e tale formato è abbastanza facile da generare/analizzare anche in altre lingue.

Quindi, si ottiene "built-in" deserializzazione in JavaScript (cioè si può solo interpretare il testo come codice) senza librerie extra, e altre piattaforme può creare, di solito con una biblioteca. (Tipicamente un web server genera JSON per un browser di interpretare.)


Questo presuppone vi fidate l'origine dati completamente, ovviamente - l'esecuzione di testo arbitrario come codice è abbastanza pericoloso dal punto di vista della sicurezza.

+0

+1 Per aver menzionato che si tratta principalmente di un formato di dati. – Gumbo

3

JSON è codice sorgente Javascript che dichiara una struttura dati, generalmente inviata da un server Web a un browser. Il browser esegue il codice tramite il normale parser javascript e viene visualizzata una struttura dati.

dichiarazione Una JavaScript potrebbe apparire come:

var myvar = {"column1": "valuie1"}; 
      ^^^^^^^^^^^^^^^^^^^^^^ 

La parte sottolineata con ^^^ è quello che divenne noto come JSON.

così presto, un po 'di Javascript afferrava un testo da un server e analizzare le cose come:

var myvar = eval('(' + textfromserver + ')'); 

Dal eval è pericoloso, è al giorno d'oggi più spesso utilizzato come:

var myObject = JSON.parse(myJSONtext); 

Si tratta di una hack che molte persone hanno trovato utile lo hanno reso uno standard. Vedi this wikepedia page per una spiegazione molto più approfondita.

0

Proverò a renderlo semplice. Se hai familiarità con XML, in linea di principio è come XML in quanto memorizza i dati in modo facile da leggere sia per gli utenti che per i programmi. È etichettato come "formato di interscambio dati" perché verrà utilizzato come intermediario per spostare i dati tra un programma e l'altro.

Ad esempio, potresti avere un determinato database che vorresti che gli altri prendessero informazioni e usassero nel loro programma. Piuttosto che dare loro pieno accesso al database, potresti limitare il loro accesso scrivendo una sorta di strato JSON. Le persone possono quindi accedere a JSON in modo molto simile a un feed RSS. Esempio di vita reale: Yahoo fornisce un livello JSON per il proprio motore di ricerca in modo che le persone possano scrivere widget desktop (o qualsiasi altra cosa) in grado di eseguire ricerche yahoo e ottenere risultati inviati direttamente ai widget del desktop.

La brutta alternativa all'utilizzo di qualcosa come JSON potrebbe essere quella di far ottenere al programma il contenuto HTML di una pagina Web e in qualche modo trovare le informazioni necessarie. (E se il layout HTML del sito cambia, è necessario modificare il programma.)

+0

u puoi anche definire le funzioni con json – Chris

+0

@Chris: No, no non puoi. – Ryan

+0

@minitech: sicuro, è: var o = {f: function() {alert ('yes we can!')}}; di(); – Chris

0

Se volete vedere le cose in pratica fanno guardare questo video che dimostra JSON Click here to see the JSON video

JSON (JavaScript Object Notation) è un semplice formato di scambio dei dati che aiuta a comunicare tra JavaScript e tecnologie lato server, come Servlet, JSP, WCF, ASP.Net ecc.

Il formato di JSON è come mostrato di seguito. Il formato seguente rappresenta un oggetto "Cliente" con proprietà "CustomerCode" e "CustomerName".

![{"CustomerCode":"1001","CustomerName":"Shiv"}][2] 

enter image description here

Ora questo formato può essere facilmente consumato da javascript e trasformato in a JavaScript Object. Guarda la figura sopra dove abbiamo fornito JSON alla variabile javascript e puoi vedere come viene valutato un oggetto javascript con una proprietà "CustomerCode" e "CustomerName".

enter image description here

Se si guarda l'architettura web Ha due parti browser e server. Dal lato del browser, Javascript è la lingua più importante e consolidata mentre sul server si hanno diverse tecnologie come JSP, ASP.NET, PHP ecc.

Quindi se le tecnologie lato server emettono un formato JSON che può essere facilmente trasformato in un oggetto javascript che faciliterebbe realmente la comunicazione tra più tecnologie lato server e linguaggio javascript.

0

JSON (JavaScript Object Notation) è un formato leggero che viene utilizzato per i dati di interscambio. È anche un sottoinsieme della notazione oggetto di JavaScript (il modo in cui objects è incorporato in JavaScript).

JSON è un modo di serializzare in modo tale che diventa codice JavaScript. Quando viene eseguito (con eval o in altro modo), questo codice crea e restituisce un oggetto JavaScript che contiene i dati serializzati. Questo è disponibile perché JavaScript consente la seguente sintassi:

var MyArray = [ 1, 2, 3, 4]; // MyArray is now an array with 4 elements 
var MyObject = { 
    'StringProperty' : 'Value', 
    'IntProperty' : 12, 
    'ArrayProperty' : [ 1, 2, 3], 
    'ObjectProperty' : { 'SubObjectProperty': 'SomeValue' } 
}; // MyObject is now an object with property values set. 

È possibile utilizzare questo per diversi scopi. Per uno, è un modo comodo per passare i dati dal back-end del server al codice JavaScript. Pertanto, questo è spesso usato in AJAX.

È inoltre possibile utilizzarlo come meccanismo di serializzazione autonomo, che è più semplice e occupa meno spazio di XML. Esistono molte librerie che consentono di serializzare e deserializzare oggetti in JSON per vari linguaggi di programmazione.

Ecco un resoconto molto veloce e conciso. http://secretgeek.net/json_3mins.asp

(thnx a mson, Vilx)