我有包含英寸和英尺标记(\“和\')的数据,来自AJAX调用的响应返回有效的JSON(”已转义,而不是“)我在HTML表单中使用
以下JSON响应:(其他项目可能有多个价格/大小组合因此列表;此示例为简洁起见)
{"pl":{"common":"","price":[219],"size":["2\""]}}
请注意,2英寸的大小具有正确的JSON转义\“。
使用以下javascript(使用jQuery .getJSON),返回的数据不包含转义的char:
$.getJSON(url,
{data},
function(json){
var obj = json.pl.size;
var options = '<option value="">Size</option>';
for (var i = 0; i < obj.length; i++) {
// possible for size to have \' and/or \" chars
options += '<option value="' + obj[i] + '">' + obj[i] + '</option>';
}
// populate the select box with the options
});
成功函数返回:
json: Object
pl: Object
common: ""
price: Array[1]
size: Array[1]
0: "2""
请注意,size[0]
数据不再具有转义"
问题 1.为什么在成功响应中没有遵守JSON转义数据?
嘻嘻哈哈:
答案 0 :(得分:1)
在JavaScript中,以下是评估方式:
String("2\"")
返回"2""
String("2\\\"")
返回"2\""
String("2\\")
返回"2\"
JSON要求对反斜杠进行转义,因此正确的语法为"2\\\\\\\""