我正在尝试使用Json2.js在JavaScript中解析包含双引号字符串的Json,如下所示。
<script src="Scripts/json2.js" type="text/javascript"></script>
<script src="Scripts/jquery-1.4.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
try {
var inv = JSON.parse('{"Items":[{"Quantity":1,"Description":"Width : 16\" Asd","Price":49.17,"IsEditable":false}],"Vat":20.00,"Delivery":0}');
console.log(inv.Vat);
}
catch (err) {
console.log(err);
}
});
</script>
但是我在解析时遇到语法错误。我在这里错过了什么吗?
答案 0 :(得分:3)
"Width : 16\"
中的斜杠字符被视为转义JavaScript字符串中的"
字符。由于字符串由单引号分隔,因此没有区别,与"Width : 16"
相同。
为了在JavaScript字符串文字中包含JSON转义引号字符,您需要转义转义。
"Width : 16\\"
你可能最好只拥有一个JS对象文字,而不是你立即解析的JSON字符串:
var inv = {"Items":[{"Quantity":1,"Description":"Width : 16\" Asd","Price":49.17,"IsEditable":false}],"Vat":20.00,"Delivery":0};
答案 1 :(得分:1)
解析字符串时,\"
已经被JavaScript转换为"
。
要将\"
传递给JSON,您应该使用\\"
。这样,解析后的字符串为\"
,这将在JSON.parse
依次正确解析。