[英]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.