2014-03-05 7 views
5

Ich habe einfache JSON, die ich zum Objekt analysieren muss. Seltsamerweise funktioniert es nicht, auch wenn ich meine JSON-Zeichenfolge kopieren und in JSONLint (http://jsonlint.com/) einfügen, wird es zeigen, dass es gültig ist.JSON Lint sagt, es ist gültig, aber JSON.parse löst Fehler

var string = '{"token":"9eebcdc435686459c0e0faac854997f3","email":"201403050007950","id":"13","updated_at":"2014-03-05 10:34:51","messageguides":"[{\"name\":\"Un-named Messaging Guide 1\",\"pages\":[\"sustainabilitydirectors\",\"marketingnbusinessdevelopmentdirectors\"],\"date\":1394015692958}]"}'; 

var obj = JSON.parse(string); // Unexpected token n 

console.log(obj); 
+0

Sie haben JSON in Ihrem JSON? –

+1

Ich denke, du musst deine Fluchtzeichen "flüchten". Also '\\" Name \\ "' anstelle von \ "Name \". – Andy

+0

@dystroy ja .. – sed

Antwort

11

Die \ Zeichen in den Daten als JSON Escape-Zeichen behandelt werden, wenn Sie die JSON analysieren.

Wenn Sie diesen JSON in eine JavaScript-Zeichenfolge einbetten, werden sie als JavaScript Escape-Zeichen und nicht als JSON-Escape-Zeichen behandelt.

Sie müssen sie als \\, wenn Sie Ihren JSON als JavaScript-Zeichenfolge ausdrücken.


Das heißt, Sie sind in der Regel besser, nur die JSON Abwurf in das JavaScript als ein Objekt (oder Array) literal, statt es in einer Reihe von Einbettungs und dann in einem separaten Schritt das Parsen.

var obj = {"token":"9eebcdc435686459c0e0faac854997f3","email":"201403050007950","id":"13","updated_at":"2014-03-05 10:34:51","messageguides":"[{\"name\":\"Un-named Messaging Guide 1\",\"pages\":[\"sustainabilitydirectors\",\"marketingnbusinessdevelopmentdirectors\"],\"date\":1394015692958}]"}; 
Verwandte Themen