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

l7mqbcuq  于 2023-01-03  发布在  Java
关注(0)|答案(7)|浏览(193)

在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("\\", "");

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

vuv7lop3

vuv7lop31#

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

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

当你想用.replace替换所有的匹配项时,第一个参数必须是一个正则表达式,如果你提供一个字符串,只有第一个匹配项会被替换,这就是为什么你的替换不起作用。
干杯

jmo0nnb3

jmo0nnb32#

**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));
ndasle7k

ndasle7k3#

试试这个

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

9rygscc14#

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

xzlaal3s

xzlaal3s5#

在将JSON作为响应返回之前,您需要对它进行一次反序列化。请参考以下代码。这对我很有效:

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

zpqajqem6#

在React Native中,这对我很有效

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

fkvaft9z7#

跌跌撞撞几个小时后,这个方法成功了,你可以用这个函数把你的带反斜杠的JSON字符串转换成JavaScript对象。

function strToObj(str: string) {
    var obj = {};
    if (str && typeof str === 'string') {
      var objStr = str.match(/\{(.)+\}/g);
      eval('obj =' + objStr);
    }
    return obj;
  }

相关问题