1

サーバーから返された文字列があります。それは形式であり、

[{"text":"content"}]

wherecontentは動的な文字列であり、ユーザーの操作によって異なります。そのような特定のケースでは、返された文字列を評価できませんが、 を使用するJSON.parseと、問題なく正常に動作します。私の評価は以下のようなものです

eval("(" + response + ")").

特定の制限により、問題のある文字列をここに貼り付けることはできません。しかし、eval機能しない特定のケースと機能する特定のケースはありJSON.parseますか?

EDIT1: 問題を絞り込みましたが、問題を引き起こす特定の文字列は、

[{"con" :"g
&lt;\/font><\/td"}]

この文字列は評価できませんが、解析できます。問題は文字列「/」が原因だと思います。しかし、私はその理由を理解できません。この点でどんな助けも素晴らしいでしょう。

EDIT2: g と < の間に見えない文字が存在し、それが問題の原因となっています。何のキャラクターか分かる人いますか?eval を JSON.parse に変更します。しかし、私はそれが失敗した理由を知りたかったのです。

4

3 に答える 3

2

そのバグのある文字は、 UnicodeLINE SEPARATORである U+8232です。さまざまなブラウザーで「未終了の文字列リテラル」構文エラーが発生します。これが、文字列に対して機能しない理由eval()です。JSON は実際には JS のサブセットJSON.parseではないため、これを回避できます。

于 2012-08-27T19:21:12.880 に答える
1

json2 ライブラリを使用して JSON を解析します。

于 2012-08-27T16:38:13.470 に答える
-1

JSON の解析と JavaScript の解析を混同しています。eval()JSON を解析しません。Eval には有効な JS 構文が必要です。では"test":"test"、プロパティを囲む引用符は、javascript オブジェクト リテラル表記では無効です。

于 2012-08-27T16:45:21.870 に答える