2012-04-05 10 views
2

Meine benutzerdefinierte Methode json von String erhalten:Syntaxfehler von JSON.parse()

function GetJSON(a) { 
     if (typeof a !== "string" || !a || a == null) return null; 
     a = a.replace(/\r\n|\r|\n|\t/g, '').replace(/\\/g, '/'); 
     return new Function("return " + a)(); 
    } 

    var notes ='{editable:true,useAjax:false,notes:[{"top":76,"left":411,"width":30,"height":30,"text":"hill","editable":true},{"top":183,"left":556,"width":30,"height":30,"text":"lake","editable":true}]}'; 

    return GetJSON(notes); //<-- works fine 

    //I am trying to replace my custom method with 
     return JSON.parse(notes); 

Aber ich Syntaxfehler, wenn ich JSON.parse() aufrufen

Was kann falsch sein?

EDIT: Ich habe den tatsächlichen Wert eingefügt, den ich an JSON.parse() aus der Debug-Ausgabe übergeben.

+0

Für die Zukunft („Was kann falsch sein“, wenn Sie einen Syntaxfehler erhalten), bedeutet Syntaxfehler, dass Ihre Eingabe syntaktisch ungültig , IE es folgt nicht den Grammatikregeln der Sprache. – Esailija

Antwort

4
notes = "{editable:true,useAjax:false,notes:[" + notes + "]}"; 

Sie haben vergessen, Ihre Schlüssel hier zu zitieren. Es sollte:

notes = '{"editable":true,"useAjax":false,"notes":[' + notes + ']}'; 

Der letzte JSON sollte sein:

var notes ='{"editable":true,"useAjax":false,"notes":[{"top":76,"left":411,...' 
+0

lass mich das versuchen ... – kheya

+0

Das war das Problem! Wie dumm von mir. – kheya

+0

Ja, JSON.parse ist wirklich streng über Syntax :-P –

2

Ihre Notizen Teil fehlt ein , zwischen den beiden {} Sets, so dass es JSON ungültig.

Es sollte

sein
[..snip..] "editable":true}, ' + '{"top":20,"left"[...snip...] 
          ^^--- missing 
+0

Es scheint ein Komma im Code in der Frage zu sein (vielleicht wurde es bearbeitet?). –

+0

Ja, war nicht zu der Zeit ... –

Verwandte Themen