【问题标题】:JSON.stringify() not escaping apostropheJSON.stringify() 没有转义撇号
【发布时间】:2011-09-08 14:16:44
【问题描述】:

...使用 JSON2.js 和 JQUERY

从第一张图片可以看出,对象属性 customerReport.Title 有一个撇号。在代码中,您可以看到我将 JSON.stringify() 调用为 reportAsJson 字符串,该字符串仍然具有未转义的撇号。

$.ajax() 返回的错误是{"Message":"Invalid object passed in, \u0027:\u0027 or \u0027}\u0027 expected. ...

最初我只是要禁止用户使用撇号,但我认为 JSON.stringify() 处理了这个,还是我需要设置一些选项????

谢谢

【问题讨论】:

  • 您不需要在 JSON 中转义单引号。 {"Message":"Invalid object passed in... 来自哪里?
  • 返回此错误消息的原因是什么?
  • @MattBall 我从 Response 选项卡的 firebug 控制台面板复制了它
  • 查看更新的屏幕截图以了解错误来源。我的 .net 代码永远不会被调用,除非我删除了撇号

标签: json


【解决方案1】:

您可以避免删除这些 撇号 将它们替换为 HTML 实体 ' - 这是一个单引号 - 稍后在客户端或服务器中解码 HTML 实体 -一边。

【讨论】:

  • 尽量避免这种情况……如果可以的话
【解决方案2】:

在多次尝试 stringify 和其他 JSON 解析功能失败后,以下对我有用:

updatedString = string.replace(/('[a-zA-Z0-9\s]+\s*)'(\s*[a-zA-Z0-9\s]+')/g,"$1\\\'$2");

在哪里

  • string = 包含撇号的字符串。
  • updatedString = 带有撇号问题的字符串已解决/已转义

【讨论】:

    猜你喜欢
    • 2013-07-13
    • 1970-01-01
    • 2015-08-27
    • 2016-03-23
    • 2018-08-26
    • 2018-09-21
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多