1

私はこの問題に取り組んでおり、ウェブとスタックオーバーフローで解決策を探しましたが、エラーを正確に取得できません。

これは、ajax呼び出しを介してサーバーから送信されるjson文字列です。

{root:{name: "root",description: "root description",checked: false,1:{name: "item1",description: "item1 description",checked: true,1.1:{name: "item1.1",description: "item1.1 description",checked: true}}, 2:{name: "item2",description: "item2 description",checked: true}}}

以下のコードを使用して、私は後に文字列を取得していますxmlhttp.readyState == 4 && xmlhttp.status == 200

var aData;
        try{
        aData =JSON.parse(xmlhttp.responseText);
        }
        catch(err){
        alert(err);
        }

次のようなエラーが表示されます

Json.parse expected property name or '}'

ただし、eval()関数を使用すると、正常に機能します

var aData;
        try{
        aData =eval('(' + xmlhttp.responseText + ')');
        }
        catch(err){
        alert(err);
        }

ここでエラーが何であるかをexaplinしてください。

ありがとう。

編集:

jsonビューアで文字列を確認しましたが、正常に機能しました。http://jsonviewer.stack.hu/"> JSONビュー

4

1 に答える 1

-1

これは無効な JSON であるためです。数値をキー名として使用することはできません。したがって、数字をスキップするか、引用符で囲んで「文字列」にすることができます。

バリデーターの出力と修正された JSON は次のとおりです。

修正された JSON:

{
   "root":{
      "name":"root",
      "description":"root description",
      "checked":false,
      "1":{
         "name":"item1",
         "description":"item1 description",
         "checked":true,
         "1.1":{
            "name":"item1.1",
            "description":"item1.1 description",
            "checked":true
         }
      },
      "2":{
         "name":"item2",
         "description":"item2 description",
         "checked":true
      }
   }
}

バリデータ出力:

Error:Strings should be wrapped in double quotes.[Code 17, Structure 2]
Error:Strings should be wrapped in double quotes.[Code 17, Structure 5]
Error:Strings should be wrapped in double quotes.[Code 17, Structure 9]
Error:Strings should be wrapped in double quotes.[Code 17, Structure 13]
Error:Expecting string, not number.[Code 8, Structure 17]
Error:Expecting comma or }, not colon.[Code 13, Structure 18]
Error:Strings should be wrapped in double quotes.[Code 17, Structure 20]
Error:Strings should be wrapped in double quotes.[Code 17, Structure 24]
Error:Strings should be wrapped in double quotes.[Code 17, Structure 28]
Error:Expecting string, not number.[Code 8, Structure 32]
Error:Expecting comma or }, not colon.[Code 13, Structure 33]
Error:Strings should be wrapped in double quotes.[Code 17, Structure 35]
Error:Strings should be wrapped in double quotes.[Code 17, Structure 39]
Error:Strings should be wrapped in double quotes.[Code 17, Structure 43]
Error:Expecting string, not number.[Code 8, Structure 49]
Error:Expecting comma or }, not colon.[Code 13, Structure 50]
Error:Strings should be wrapped in double quotes.[Code 17, Structure 52]
Error:Strings should be wrapped in double quotes.[Code 17, Structure 56]
Error:Strings should be wrapped in double quotes.[Code 17, Structure 60]
于 2012-10-15T03:53:23.177 に答える