在JavaScript中从Json数据中删除反斜杠

时间:2014-01-10 05:12:15

标签: javascript jquery json

从JavaScript或jQuery中的JSON数据中删除反斜杠

var str = "{"data":"{\n \"taskNames\" : [\n \"01 Jan\",\n \"02 Jan\",\n \"03 Jan\",\n \"04 Jan\",\n \"05 Jan\",\n \"06 Jan\",\n \"07 Jan\",\n \"08 Jan\",\n \"09 Jan\",\n \"10 Jan\",\n \"11 Jan\",\n \"12 Jan\",\n \"13 Jan\",\n \"14 Jan\",\n \"15 Jan\",\n \"16 Jan\",\n \"17 Jan\",\n \"18 Jan\",\n \"19 Jan\",\n \"20 Jan\",\n \"21 Jan\",\n \"22 Jan\",\n \"23 Jan\",\n \"24 Jan\",\n \"25 Jan\",\n \"26 Jan\",\n \"27 Jan\"]}

var finalData = str.replace("\\", "");

但这对我不起作用。有什么帮助吗?

6 个答案:

答案 0 :(得分:29)

你的字符串无效,但假设它是有效的,你必须这样做:

var finalData = str.replace(/\\/g, "");

当你想用.replace替换所有出现的时候,第一个参数必须是一个正则表达式,如果你提供一个字符串,只会替换第一个出现的那个,这就是你的替换不起作用的原因。 / p>

干杯

答案 1 :(得分:27)

tl; dr:你不必删除斜杠,你有嵌套的JSON,因此必须解码JSON两次:DEMO(注意我使用了双斜杠例子,因为JSON在JS字符串文字中。)


我假设您的实际JSON看起来像

{"data":"{\n \"taskNames\" : [\n \"01 Jan\",\n \"02 Jan\",\n \"03 Jan\",\n \"04 Jan\",\n \"05 Jan\",\n \"06 Jan\",\n \"07 Jan\",\n \"08 Jan\",\n \"09 Jan\",\n \"10 Jan\",\n \"11 Jan\",\n \"12 Jan\",\n \"13 Jan\",\n \"14 Jan\",\n \"15 Jan\",\n \"16 Jan\",\n \"17 Jan\",\n \"18 Jan\",\n \"19 Jan\",\n \"20 Jan\",\n \"21 Jan\",\n \"22 Jan\",\n \"23 Jan\",\n \"24 Jan\",\n \"25 Jan\",\n \"26 Jan\",\n \"27 Jan\"]}"}

即。你有一个顶级对象,只有一个键data。该键的值是一个包含JSON本身的字符串。这通常是因为服务器端代码没有正确创建JSON。这就是你在字符串中看到\"的原因。这使得解析器知道"将按字面处理,并且不会终止字符串。

因此,您可以修复服务器端代码,这样就不会对数据进行双重编码,或者您必须对JSON进行两次解码,例如。

var data = JSON.parse(JSON.parse(json).data));

答案 2 :(得分:3)

试试这个

var finalData = str.replace(/\\/g, '');

答案 3 :(得分:1)

尝试做 JSON.parse(data),它应该可以工作。在大多数情况下,当从 Sitecore 或任何后端生成 JSON 时,它们会带有所有斜杠。

答案 4 :(得分:0)

您需要先反序列化JSON,然后再将其作为响应返回。 请参考下面的代码。这对我有用:

JavaScriptSerializer jss = new JavaScriptSerializer();
Object finalData = jss.DeserializeObject(str);

答案 5 :(得分:0)

在React Native中,这对我有用

name = "hi \n\ruser"
name.replace( /[\r\n]+/gm, ""); // hi user
相关问题