1. ホーム
  2. javascript

[解決済み] JSON.parse()が動作しない

2022-03-03 13:47:24

質問

私のサーバーからのjsonは-です。

{"canApprove": true,"hasDisplayed": false}  

このようにjsonをパースすることができます -。

var msg = JSON.parse('{"canApprove": true,"hasDisplayed": false}');
alert(msg.canApprove);  //shows true.

ajaxレスポンス関数で、先ほどのjsonと同じものをメソッドパラメータでキャッチしています。 jsonObject -

//response function
function(jsonObject){

  //here jsonObject contains the same json -  {"canApprove":true,"hasDisplayed": false}
  //But without the surrounding single quote
  //I have confirmed about this by seeing my server side log.

  var msg = JSON.parse(jsonObject); // this gives the error

}

しかし、今度は次のようなエラーが発生しました。

SyntaxError: JSON.parse: 予期しない文字が1行目から2列目にあります。 JSONデータ

なぜこのようなエラーが発生するのか、どなたか教えていただけませんか?

解決方法を教えてください。

を呼び出してはいけないと思います。 JSON.parse(jsonObject) は、サーバーが有効な JSON を送信している場合、レスポンスを取得するときに自動的にパースされるからです。もし Content-type: application/json ヘッダーは自動的に解析されます。

を使ってみてください。 jsonObject をすでにパースされているかのように、次のようなものです。

console.log(jsonObject.canApprove);

を呼び出すことなく JSON.parse を前にしています。