JSON 内の単一引用符のエスケープが原因で jQuery.parseJSON が「無効な JSON」エラーをスローする
問題:
jQuery.post() を使用してサーバーから JSON オブジェクトを取得する場合、値のいずれかにエスケープされた一重引用符 (') が含まれていると解析が失敗します。これは、JSON 文字列が有効である場合でも発生します。
理由:
JSON 仕様によれば、文字列内ではエスケープされた二重引用符のみが許可され、一重引用符は許可されません。一重引用符文字は、JSON 標準に従ってエスケープする必要はありません。
更新:
「JavaScript: The Good Parts」での JSON に関するディスカッション中、Douglas Crockford、 JSON の作成者は、エスケープされた二重引用符のみを許可する決定は相互運用性を簡素化するために行われたと説明しました。二重引用符のみの使用を要求することで、混乱や文字列の誤終了の可能性が排除されます。
意味:
これは、単一引用符文字は使用できないことを意味します。 JSON 文字列内で誤って文字列を終了してしまう可能性があります。したがって、正式な JSON 仕様では一重引用符のエスケープは必要ありません。
実装の考慮事項:
JSON 仕様では一重引用符のエスケープは許可されていませんが、org などの bazı 実装ではJava の .json はより寛大で、使用が許可されています。ただし、これは標準ではなく、jQuery で使用される実装を含む多くの一般的な実装は、公式の JSON 仕様に厳密に従っており、一重引用符付き文字列やエスケープされた一重引用符を含む JSON を拒否することに注意することが重要です。
jQuery.parseJSON の動作:
jQuery.parseJSON は、ブラウザーによって提供される基盤となる JSON パーサー、または json2.js などのロードされたライブラリに依存します。これらの実装は通常、JSON 仕様に準拠しているため、一重引用符のエスケープは許可されず、したがって jQuery も許可されません。
以上がエスケープされた一重引用符が存在すると jQuery.parseJSON が「無効な JSON」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。