読者です 読者をやめる 読者になる 読者になる

JSON.parse が駄目なら eval でいいじゃない

javascript

cakephpでjson返してjavascriptで JSON.parse するとparseエラーが出た。別の環境だとうまくいくのに。phpのバージョンとかjqueryのバージョンも関係なさそう。理由がさっぱり分からん。上手くいかないケースはタブが\tでなかったり、/がエスケープされてなかったりするんだけど、内容的に違いは無かった。
なのでJSON.parseよりもチェックの緩いevalにしたところ、ひとまず処理された。

$.ajax({
  type:  "post",
  url:   url,
  data:  data,
  success: function(json) {
    //var res = JSON.parse(json);
    var res = eval('(' + json + ')');
  }
});

セキュリティや速度の面でもJSON.parseを使うのが推奨されているようなので、使っても大丈夫なケースで利用したらいいんじゃないかと思う。

以下のサイトでJSONが正しいか判定することができるので便利
JSONLint - The JSON Validator.


参考サイト
JSONを設定ファイル代わりに使う場合は JSON.parse → だめなら → eval のように二段階で評価するといいんじゃないかな - latest log
夕暮ログ JSON.parseとevalなどの比較とスピードテスト