4

文字列からjsonを取得するための私のカスタムメソッド:

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);

しかし、JSON.parse()を呼び出すと構文エラーが発生します

何が間違っている可能性がありますか?

編集:デバッグ出力からJSON.parse()に渡す実際の値を貼り付けました。

4

2 に答える 2

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

ここでキーを引用するのを忘れました。そのはず:

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

最終的なJSONは次のようになります。

var notes ='{"editable":true,"useAjax":false,"notes":[{"top":76,"left":411,...'
于 2012-04-05T17:28:23.917 に答える
2

メモ部分が,2つのセットの間に欠落し{}ているため、JSONが無効になっています。

そのはず

[..snip..] "editable":true}, ' + '{"top":20,"left"[...snip...]
                           ^^--- missing
于 2012-04-05T17:21:55.737 に答える