由于 JSON 中转义单引号,jQuery.parseJSON 抛出“无效 JSON”错误
问题:
使用 jQuery.post() 从服务器检索 JSON 对象时,如果任何值包含转义单引号 ('),则解析失败。即使 JSON 字符串在其他方面有效,也会发生这种情况。
原因:
根据 JSON 规范,字符串中只允许使用转义双引号,而不是单引号。根据 JSON 标准,单引号字符不需要转义。
更新:
Douglas Crockford 在“JavaScript:The Good Parts”中关于 JSON 的讨论中, JSON 的创建者解释说,只允许转义双引号的决定是为了简化互操作性。通过仅要求使用双引号,它消除了字符串混乱和意外终止的可能性。
含义:
这意味着单引号字符是不可能的在 JSON 字符串中意外终止该字符串。因此,在正式的 JSON 规范中,转义单引号字符是不必要的。
实现注意事项:
虽然 JSON 规范不允许转义单引号,但 bazı 实现,例如 org Java 的 .json 更加宽松并允许它们使用。然而,需要注意的是,这不是常态,许多流行的实现,包括 jQuery 使用的实现,都严格遵守官方 JSON 规范,并拒绝包含单引号字符串和/或转义单引号的 JSON。
jQuery.parseJSON 行为:
jQuery.parseJSON 依赖于浏览器提供的底层 JSON 解析器或加载的库(如 json2.js)。由于这些实现通常符合 JSON 规范,因此它们不允许转义单引号,因此 jQuery 也不允许。
以上是当存在转义单引号时,为什么 jQuery.parseJSON 会抛出'无效 JSON”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!