2009-05-07 28 views

risposta

2

Quoth Crockford (http://www.json.org/js.html):

Per convertire un testo in un oggetto JSON, è possibile utilizzare la funzione eval(). eval() richiama il compilatore JavaScript . Poiché JSON è un sottoinsieme appropriato, il compilatore analizzerà correttamente il testo e produce una struttura di oggetto. Il testo deve essere racchiuso tra parentesi per evitare che inciampi in un'ambiguità nella sintassi di JavaScript di .

var myObject = eval ('(' + myJSONtext + ')');

La funzione eval è molto veloce. Tuttavia, può compilare ed eseguire qualsiasi programma JavaScript, quindi è possibile che siano problemi di sicurezza. L'utilizzo di eval è indicato quando la fonte è attendibile e competente. È molto più sicuro usare un parser JSON. ...

Per difendersi da questo, è necessario utilizzare un parser JSON . Un parser JSON riconosce solo il testo JSON, rifiutando tutti gli script. Nei browser che forniscono il supporto JSON nativo , i parser JSON sono anche molto più veloci di eval. È che il supporto JSON nativo sarà incluso nel prossimo standard ECMAScript .

var myObject = JSON.parse (myJSONtext, reviver);

E poi sviluppa il prototipo JSON nel resto dell'articolo.

Le versioni di Gecko utilizzate in Firefox 3 e 3.5 supportano JSON in modo nativo (https://developer.mozilla.org/En/JSON), che può essere utile se il progetto è limitato a una recente applicazione basata su Gecko.


Come indicate qui di seguito, la parte interessante del generatore di testo (non parser) è a https://github.com/douglascrockford/JSON-js/blob/master/json2.js e introdotta con

Un JSON stringifier va nella direzione opposta, convertendo strutture di dati JavaScript in JSON testo. JSON non supporta strutture dati cicliche, quindi fai attenzione a non fornire strutture cicliche all'artificatore JSON.

var myJSONText = JSON.stringify (myObject, replacer);

Le strutture di dati ciclici e gli oggetti che non sono serializzati in modo utile sono ovviamente gli unici grossi avvertimenti.

0

Vale la pena ricordare che il collegamento di Anonimo (http://www.json.org/js.html) vi punto nella giusta direzione perché la pagina anche include informazioni su come stringa i una struttura dati JavaScript in JSON testo:

A JSON stringifier va nella direzione opposta, convertendo strutture di dati JavaScript in testo JSON.

In particolare, cercare il collegamento nella parte inferiore della pagina che punta a un parser JSON open source e un identificatore JSON.

12

Ci sono due metodi di esempio in biblioteca di Crockford (come sollevata da @Anonymous):

stringa

JSON per oggetto:

var obj = JSON.parse('{ "property":"value" }'); 
alert (obj.property); 

// value 

oggetto a stringa JSON:

var str = JSON.stringify({ "property":"value" }) 
alert (str); 

//{ "property":"value" } 

ci sono anche costruito in metodi per farlo nella maggior parte dei principali quadri.

+0

Biblioteca all'indirizzo http://www.json.org/json.js – Keith

+2

@Jason T Featheringham Waow 'Mr.Json' era presente qui stesso a modificare la domanda :) –