【问题标题】:Syntax error in parsing a simple json with quotes?解析带引号的简单 json 时出现语法错误?
【发布时间】:2011-10-18 04:49:19
【问题描述】:

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

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

【问题讨论】:

  • 如果您发现问题的答案有助于解决您的问题,请单击答案旁边的勾号接受它。这将有助于建立您的声誉并在您的个人资料框中显示鼓励对任何新问题的回答。

标签: javascript json parsing


【解决方案1】:

"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};

【讨论】:

    【解决方案2】:

    在解析字符串时,\" 已经被 JavaScript 转换为 "

    要使其将\" 传递给JSON,您应该使用\\"。这样,解析后的字符串为\",这将依次正确解析为JSON.parse

    【讨论】:

      猜你喜欢
      • 2011-12-16
      • 1970-01-01
      • 2019-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      相关资源
      最近更新 更多