Ich fädle ein Objekt wie {'foo': 'bar'}
Wie kann ich die Zeichenfolge wieder in ein Objekt umwandeln?
javascript
json
object
thelolcat
quelle
quelle
{foo: 'bar'}
JSON nicht gültig ist (obwohl es sich um einen gültigen Javascript-Ausdruck handelt).Antworten:
Sie müssen
JSON.parse()
die Zeichenfolge.quelle
JSON.parse
ist das Gegenteil vonJSON.stringify
.quelle
JSON.stringify
undJSON.parse
sind fast entgegengesetzt, und "normalerweise" wird so etwas funktionieren:so dass obj und obj2 "gleich" sind.
Es sind jedoch einige Einschränkungen zu beachten. Oft spielen diese Probleme keine Rolle, wenn Sie mit einfachen Objekten arbeiten. Aber ich werde einige von ihnen hier mit dieser Hilfsfunktion veranschaulichen:
Sie werden nur
ownProperties
vom Objekt kommen und Prototypen verlieren:Sie verlieren Identität:
Funktionen überleben nicht:
Datumsobjekte enden als Zeichenfolgen:
Undefinierte Werte überleben nicht:
Objekte, die eine
toJSON
Funktion bereitstellen, verhalten sich möglicherweise nicht richtig.Ich bin sicher, dass es auch Probleme mit anderen integrierten Typen gibt. (All dies wurde mit node.js getestet, sodass Sie je nach Umgebung möglicherweise ein leicht unterschiedliches Verhalten erhalten.)
Wenn es darauf ankommt, kann es manchmal mit den zusätzlichen Parametern von
JSON.parse
und überwunden werdenJSON.stringify
. Zum Beispiel:quelle
JSON SPEC
{ bar:"bar" }
(von Ihrem Prototyp) nicht als gültiger json angesehen wird, dafoo
es sich eher um eine Variable als um eine Zeichenfolge handelt. Gültiger JSON musskey
ein seinstring
.JSON.parse
. Ich warne nur, dass es viele Fälle gibt, die nicht richtig behandelt werden. Wenn Sie reine primitive Daten (keine Klassen, Prototypen) und nur die von JSON unterstützten Datentypen (keine Daten, XML, HTML usw.) verwenden, sind Sie in Ordnung.X = { foo:"bar" }
ist das gleiche wieX = { "foo":"bar" }
das gleiche wieX = {}; X.foo = "bar"
das gleiche wieX={}; X["foo"] = "bar"
Das resultierende Objekt ist in allen 4 Fällen identisch. Dies hat keinen Einfluss auf die Gültigkeit des generierten JSON.http://jsbin.com/tidob/1/edit?js,console,output
Das native JSON-Objekt enthält zwei Schlüsselmethoden.
Die
JSON.parse()
Methode analysiert eine JSON-Zeichenfolge, dh die Rekonstruktion des ursprünglichen JavaScript-Objektsvar jsObject = JSON.parse(jsonString);
Die Methode JSON.stringify () akzeptiert ein JavaScript-Objekt und gibt das JSON-Äquivalent zurück.
var jsonString = JSON.stringify(jsObject);
quelle
Empfohlen wird zu verwenden
JSON.parse
Es gibt eine Alternative, die Sie tun können:
Json in Javascript
Warum ist die Verwendung der JavaScript-Bewertungsfunktion eine schlechte Idee?
quelle
Wie wäre es damit
Dies ist eine sicherere Alternative für
eval
.Code-Snippet anzeigen
quelle
Überprüfen Sie dies heraus.
http://jsfiddle.net/LD55x/
Code:
quelle
quelle