【问题标题】:JSON.parse string invalid character issueJSON.parse 字符串无效字符问题
【发布时间】:2016-11-18 08:12:41
【问题描述】:

我无法弄清楚以下代码中的 JSON 有什么问题。

这工作正常:

var a = JSON.parse('[{"label":"not applicable"},{"label":"see items"},{"label":"40 days"},{"label":"suntest"}]');

但这会引发异常,“无效字符”:

var b = JSON.parse('[{"label":"234"},{"label":"Sunny AG, Sunny Me- Be Cars, Ben., Bu 60, DE 71059, Sind, Discharge p no. 9711\r\n"},{"label":"C207346"}]');

调试时我复制了上面的运行时代码。实际代码在 C# MVC 中为:

var a= JSON.parse('@Html.Raw(Json.Encode(Model.ShipToAddressCodeList))');

【问题讨论】:

  • 请记住,C# 中的撇号是字符,而不是字符串。

标签: javascript c# json razor model-view-controller


【解决方案1】:

您需要转义\r\n。 JavaScript 将\r\n 中的\ 解释为转义字符,但实际上它们是字符串的一部分并且应该保留。在每个 \ 前面添加另一个 \ 可以修复它,方法是转义转义字符,以便 JSON 解析器按字面意思对待它:

var b = JSON.parse('[{"label":"234"},{"label":"Sunny AG, Sunny Me- Be Cars, Ben., Bu 60, DE 71059, Sind, Discharge p no. 9711\\r\\n"},{"label":"C207346"}]');

【讨论】:

  • 感谢@Joe 的快速回复和帮助......您还从“Me Be”之间的字符串中删除了连字符(-)。我还需要删除它吗?
  • C# 在这里给出了“\n”的非字面解释,而不是 JavaScript。您可以判断,因为 这里没有 JavaScript,但您仍然有问题。
【解决方案2】:

您需要将\r\n 转义为\\r\\n

var b = JSON.parse('[{"label":"234"},{"label":"Sunny AG, Sunny Me- Be Cars, Ben., Bu 60, DE 71059, Sind, Discharge p no. 9711\\r\\n"},{"label":"C207346"}]');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 2020-08-07
    相关资源
    最近更新 更多