【问题标题】:Javascript: Escape " from json stringJavascript:从json字符串中转义“
【发布时间】:2011-03-16 11:22:42
【问题描述】:

我有点问题。我目前正在将旧系统转换为新版本。在旧版本中,数据请求由 Java 小程序管理,数据中的“-char”没有问题。 不过,现在,我从数据库中获取数据并使用 XSLT 将其转换为 JSON 字符串,然后 - 使用原型函数 .evalJSON() - 将字符串转换为对象。 然后 XSL 像这样构造数据(示例):

{rowsets: [ { rows: [ { "ID":"xxx","OtherProperty":"yyy" } ] } ] }

其中的自我是可以的。 现在,当数据库中有一些包含 "-characters 的数据时,evalJSON() 会失败,因为它会破坏通常格式正确的 JSON 字符串,如下所示:

{rowsets: [ { rows: [ { "ID":"xxx","OtherProperty":"yyy "more" zzz" } ] } ] }

现在,我想做的是以某种方式逃避“不需要的”“-chars - 而不必为我制作某种存储过程来处理它的服务器端。 我尝试过使用 RegEx,但我在这方面的经验不是很丰富,因此我很难弄清楚。

如果有帮助的话,肯定是合法的字符序列是: [“:“] 和 [”,”] 并且可能出现并且应该被转义的序列是: [\s"], ["\s], [",], [".] (\s 表示空格)

感谢您提供各种帮助,即使是一些 SQL 让这一切变得更容易:)

提前致谢!

【问题讨论】:

  • 您的转换需要生成有效的JSON!
  • 这是非常有效的 JSON,只要从数据库中获取的数据集中没有 "-characters () 函数。

标签: javascript regex json escaping


【解决方案1】:

如果您在 XSLT 领域,那么您就是在重新发明轮子。谷歌搜索“badgerfish”并查看here 以获得相当可靠的实现。当然,您可能还会遇到其他问题,但首先要做的是。

【讨论】:

  • 查看你给我的链接,我可以看到它会像我现在使用的 XSLT 一样输出数据(例如来自 site: { "alice": { "bob": [ { "$": "charlie" }, { "$": "david" } ] } }) - 使用 "" 分隔属性和数据是可以的,只要没有 "-characters 在数据 - 在我的情况下有。
  • @freaktm:不,xslt 包含转义替换内容,即“-> \”。试试看。
【解决方案2】:

我最终选择了一条捷径,在我的 XSL 中使用字符串替换模板来替换“-characters with \”,然后再将 JSON 返回到我的 javascript 函数,因此不需要在客户端转义任何内容。

(使用这个:http://geekswithblogs.net/Erik/archive/2008/04/01/120915.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 2010-10-20
    • 1970-01-01
    • 2014-01-31
    相关资源
    最近更新 更多