javascript - 为什么 jQuery JSON 解析器需要对反斜杠进行双重转义?

标签 javascript jquery json data-structures

我无法理解 JSON 数据格式的一个特殊特性。

情况如下:我有一个包含 Windows (sigh) 目录路径的字符串,反斜杠被转义了。出于某种原因,jQuery JSON 解析器认为单次转义是不够的。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">

var success = jQuery.parseJSON('{"a":"b:\\\\c"}');
var failure = jQuery.parseJSON('{"a":"b:\\c"}');

</script>

任何人都可以解释为什么需要进行这种双重转义吗?

最佳答案

第一个转义符在 Javascript 字符串字面量中将其转义。
第二次转义在 JSON 字符串文字中将其转义。

Javascript 表达式 '{"a":"b:\\c"}' 的计算结果为字符串 '{"a":"b:\c"}'.
此字符串包含单个未转义的 \,必须对 JSON 进行转义。为了得到一个包含\\的字符串,每个\都必须在Javascript表达式中进行转义,从而得到"\\\\"

关于javascript - 为什么 jQuery JSON 解析器需要对反斜杠进行双重转义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3807537/

相关文章:

javascript - jQuery wrap 打破 CSS 伪元素

JavaScript .each 函数保存最后一个值

json - 如何在 BASH 中检索 JSON 值(git commit 中的自动版本)?

javascript - 使用 CSS 设置平滑时立即滚动到顶部

javascript - jQuery 缓动弹跳动画

javascript - 应用影子 IE 8 后隐藏子内容

c# - Json 反序列化错误。不支持的 : System. Guid 类型

javascript - 数组中的第一个唯一编号。需要优雅的解决方案

javascript - Matter JS - event.pairs 数组在碰撞时为空

javascript - Instagram API 速率限制