【问题标题】:escape special characters inside json from a data attribute从数据属性中转义 json 中的特殊字符
【发布时间】:2014-09-15 20:58:42
【问题描述】:

我将 json 存储在数据属性中。

<div data-dataarray="[[&quot;Shipper&quot;,&quot;Ship No&quot;,&quot;Weight&quot;],[&quot;1WWWQUICK\PARTSCOM&quot;,1,1]]">

data = $('#'+moduleId).data('dataarray')

所以数据现在是一个字符串。

然后我需要对其进行解析以将其恢复为 json:

jsondata = JSON.parse(data);

这个 json 可以有特殊字符(注意反斜杠)...这会导致错误。如何在解析之前/解析时转义它们?

【问题讨论】:

  • 请发布您的字符串数据 json 示例
  • @viper - 添加了数据属性示例。谢谢

标签: json special-characters


【解决方案1】:

首先 我认为html5数据属性需要有一个像data-xyzUserVariable这样的形式。然后你使用 jquery.data("#xyz_id", "xyzUserVariable"),

检索它们

其次 但是,请注意 jQuery 巧妙地尝试将数据转换为合适的类型(布尔值、数字、对象、数组或 null)并避免接触 DOM。

第三 你的 json 似乎是一个对象数组。它是否缺少一个结束括号']'?

【讨论】:

  • 谢谢,我的代码是这样的,但我的例子是错误的。修好了。
  • 在您的 json 中,数组的第一个元素中的数据也是一个数组,因为它包含在方括号中。这个数组中的对象有一个未定义的对象,因为它不是像数字或用引号括起来的字符串这样的原语。即“发货人”、“发货编号”、“重量”这不应该用引号““托运人”、“船号”、“重量”吗?那么你的解析器应该可以工作。之后,一旦您检索到带有特殊字符的字符串,您就可以对它们进行转义以获取其中的 html。
  • 谢谢蝰蛇。代码一直在工作,直到用户输入一个特殊字符进入这个 data-dataarray 属性。我需要做的是转义我从数据属性中得到的特殊字符......我猜是在 JSON.parse 之前。
  • 如果您的问题仅与反斜杠有关。获得数据对象后,将所有反斜杠替换为其中两个,以从解析器获得预期结果。 IE。 str.replaceAll(/\/g,"\\");
猜你喜欢
  • 2011-05-02
  • 2017-09-10
  • 2012-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多