繁体   English   中英

Javascript:用其他一些字符替换反斜杠和双引号

[英]Javascript : Replace Backslash and double Quotes with some other char

我正在尝试用 null 或其他一些字符替换 \\",并尝试进行 JSON 解析,但根本没有发生。下面是我的代码。

var s = '{"total":2,"data":[{"assignExist":"Online","status":"Started Work","state":"Ready for Download","assignInfoletId":"100003","loadAssignId":"false","assignAdditionalInfo":[{}],"assignName":"BC Simple Form","assignId":"100003","assignProcessId":"3"},{"assignExist":"Online","status":"Started Work","state":"Ready for Download","assignInfoletId":"100003","loadAssignId":"false","assignAdditionalInfo":[{"Name":"Rishant","City":"Bangalore","Desc":"Platform-Dev","AUDIT_COMPANIES":"[{\"AUDIT_COMPANY\":\"Golder\",\"AUDITORS\":[{\"TPA_AUDITOR\":\"Swadhin Ray\",\"IS_LEAD\":\"0\",\"ASSIGNMENTS\":\"Assigmens, Sdsfds,sdfdsfd\"},{\"TPA_AUDITOR\":\"Praveen Kayetha\",\"IS_LEAD\":\"1\",\"ASSIGNMENTS\":\"Assigmens, Sdsfds,sdfdsfd\"}]}]"}],"assignName":"BC Simple Form","assignId":"100001","assignProcessId":"2"}]}';


s= s.replace(/\\"/g, "DOUBLEQ");

console.log(s);
var data = JSON.parse(s);
console.log(data);

我发现的解决方案是

var dataResponse = JSON.parse(s);

      var dataLen = dataResponse.data.length;

      for(var i=0;i<dataLen;i++){
        var audit_co = dataResponse.data[i].assignAdditionalInfo[0].AUDIT_COMPANIES;
        if(typeof audit_co!= 'undefined')
          dataResponse.data[i].assignAdditionalInfo[0].AUDIT_COMPANIES = JSON.parse(audit_co.replace(/\\"/g,'"'));
      }

我不认为这是非法的 JSON - 它看起来像 JSON 里面的 JSON,这是有效的。 尝试只解析它而不更改它。

您不需要将其解析为无效的 JSON:
您可以直接访问值:

<script>
    var s = {"total":2,"data":[{"assignExist":"Online","status":"Started Work","state":"Ready for Download","assignInfoletId":"100003","loadAssignId":"false","assignAdditionalInfo":[{}],"assignName":"BC Simple Form","assignId":"100003","assignProcessId":"3"},{"assignExist":"Online","status":"Started Work","state":"Ready for Download","assignInfoletId":"100003","loadAssignId":"false","assignAdditionalInfo":[{"Name":"Rishant","City":"Bangalore","Desc":"Platform-Dev","AUDIT_COMPANIES":"[{\"AUDIT_COMPANY\":\"Golder\",\"AUDITORS\":[{\"TPA_AUDITOR\":\"Swadhin Ray\",\"IS_LEAD\":\"0\",\"ASSIGNMENTS\":\"Assigmens, Sdsfds,sdfdsfd\"},{\"TPA_AUDITOR\":\"Praveen Kayetha\",\"IS_LEAD\":\"1\",\"ASSIGNMENTS\":\"Assigmens, Sdsfds,sdfdsfd\"}]}]"}],"assignName":"BC Simple Form","assignId":"100001","assignProcessId":"2"}]};
    console.log(s.data);
</script>

目前你有这个:

var s = '{"plainValue": 42, "nestedJSON": "{\"nested\": \"json\"}"}';

这是无效的,因为它转换为以下内存字符串:

{"plainValue": 42, "nestedJSON": "{"nested": "json"}"}
                                   ^      ^  ^    ^     invalid double quotes

解决方案很简单:不要使用嵌套的 JSON。 没有任何理由将 JSON 字符串嵌套到 JSON 字符串中。 这是你应该拥有的。

var s = '{"plainValue": 42, "nestedObject": {"nested": "object"}}';

语法上有效但很愚蠢

var s = '{"plainValue": 42, "nestedJSON": "{\\"nested\\": \\"json\\"}"}';

从源头上解决问题。 生成 JSON 字符串的函数已损坏。

当您创建 's' 字符串时, \\" 已经消失,因此 \\ char 消失了。这就是为什么您不能用某些东西替换 \\" 的原因,因为它不存在。

以下方法应该有效:

var s = JSON.stringify({"total":2,"data":[{"assignExist":"Online","status":"Started Work","state":"Ready for Download","assignInfoletId":"100003","loadAssignId":"false","assignAdditionalInfo":[{}],"assignName":"BC Simple Form","assignId":"100003","assignProcessId":"3"},{"assignExist":"Online","status":"Started Work","state":"Ready for Download","assignInfoletId":"100003","loadAssignId":"false","assignAdditionalInfo":[{"Name":"Rishant","City":"Bangalore","Desc":"Platform-Dev","AUDIT_COMPANIES":"[{\"AUDIT_COMPANY\":\"Golder\",\"AUDITORS\":[{\"TPA_AUDITOR\":\"Swadhin Ray\",\"IS_LEAD\":\"0\",\"ASSIGNMENTS\":\"Assigmens, Sdsfds,sdfdsfd\"},{\"TPA_AUDITOR\":\"Praveen Kayetha\",\"IS_LEAD\":\"1\",\"ASSIGNMENTS\":\"Assigmens, Sdsfds,sdfdsfd\"}]}]"}],"assignName":"BC Simple Form","assignId":"100001","assignProcessId":"2"}]});

var data = JSON.parse(s);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM