3

この JSON を解析しようとしています。

var json = '{"material":"Gummislang 3\/4\" 30 m (utanp\u00e5liggande sk\u00e5p)"}'

実行しますJSON.parse(json)が、実行するとエラーが発生しますSyntaxError: Unexpected number。Google Chromeでこれを試しました。JSON文字列を取得してJSONバリデーターに入れることができ、JSONが有効であると主張するため、問題が何であるかわかりません。ブラウザはそれを解析できるべきではありませんか?

4

2 に答える 2

6

表現を適切にエスケープせずに、JSON オブジェクト表現を JavaScript 文字列に挿入しています。

これを行う必要がないようにするには、表現の周りに追加している引用符を削除し、スキップしJSON.parse(json)ます – PHP からのデフォルトの出力はjson_encode()、このコンテキストで使用される場合に有効な JavaScript です。

セキュリティ上、JSON_HEX_TAG可能であればオプションを指定してください。これにより、JSON が XML として解析されたドキュメント内で終了する可能性がある場合に、クロスサイト スクリプティングが防止されます。(また、XML ドキュメントの場合、JSON も CDATA セクション内にある必要があります。)

于 2013-04-14T21:26:11.163 に答える
4

無効な JSON を含む有効な JSON 文字列である stringliteral を検証しています。有効な JSON ではない文字列の値を検証する必要があります。

文字列値を JSON バリデーターに貼り付けると、エラーが次の部分から発生していることがわかります。

"material": "Gummislang 3/4"30m

エスケープする"必要があります。

于 2013-04-14T21:21:17.283 に答える