Come posso convertire un oggetto JavaScript in una stringa JSON in una funzione JavaScript? Ho bisogno della stringa JSON per passare a una pagina JSP.Oggetto JS alla stringa JSON?
risposta
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.
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.
Ci sono due metodi di esempio in biblioteca di Crockford (come sollevata da @Anonymous):
stringaJSON 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.
Biblioteca all'indirizzo http://www.json.org/json.js – Keith
@Jason T Featheringham Waow 'Mr.Json' era presente qui stesso a modificare la domanda :) –