使用引号解析一个简单的json时出现语法错误?

时间:2011-08-02 11:49:37

标签: javascript json parsing

我正在尝试使用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>

但是我在解析时遇到语法错误。我在这里错过了什么吗?

2 个答案:

答案 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依次正确解析。