Javascript 为JSON.parse()递归检索值构造嵌套的转义JSON字符串

Javascript 为JSON.parse()递归检索值构造嵌套的转义JSON字符串,javascript,jquery,json,parsing,recursion,Javascript,Jquery,Json,Parsing,Recursion,服务器返回一个JSON字符串,如下所示: {"payload":{"data":"{\"notification_type\":\"{\"type1\":\"{\"type2\":\"type2 value\"}\"}\"}"}} 据我所知,这个字符串不能用JSON.parse()API解析,因为应该正确转义字符串中嵌套的JSON字符串。如果字符串未正确转义,则会出现以下错误: Uncaught SyntaxError: Unexpected token n in JSON at positi

服务器返回一个JSON字符串,如下所示:

{"payload":{"data":"{\"notification_type\":\"{\"type1\":\"{\"type2\":\"type2 value\"}\"}\"}"}}
据我所知,这个字符串不能用JSON.parse()API解析,因为应该正确转义字符串中嵌套的JSON字符串。如果字符串未正确转义,则会出现以下错误:

Uncaught SyntaxError: Unexpected token n in JSON at position 22
因此,应该按照如下所示的嵌套性质对字符串进行正确转义,以便JSON.parse()可以处理它:

var properString=“{\'payload\”:{\'data\”:“{\\\\”通知类型:\\\\”{\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
log(“正确的字符串=”);
console.log(properString);
var firstLevelObject=JSON.parse(properString);
log(“第一级对象=”);
console.log(firstLevelObject);
var secondLevelObject=JSON.parse(firstLevelObject.payload.data);
log(“第二级对象=”);
console.log(secondLevelObject);
var thirdLevelObject=JSON.parse(secondLevelObject.notification_type);
log(“第三级对象=”);

console.log(thirdLevelObject)实际上,您得到的JSON字符串并不完全正确。在嵌套的JSON字符串中,它不是正确的JSON语法。但您可以通过正则表达式或本机JS将其重建为正确的JSON语法字符串

var obj='{“有效载荷”:{“数据”:“{\”通知类型\\”:\“{\”类型1\”:\“{\”类型2\”:\“类型2值\”}\“}\”}”;
var payloadString=obj.substring(0,20).concat(“}}”);
obj=obj.substring(20,obj.length-3)。替换(“\”{,“{”)。替换(“}\”},“}”)。替换(“}\”},“}”)。替换(“\”{,“{”);
var data=JSON.parse(obj);
var obj2=JSON.parse(payloadString);
//控制台日志(有效载荷);
//控制台日志(数据);
obj2.payload.data=数据;

console.log(obj2);
第一个问题:你能推回维护服务器代码的人吗?理想情况下,你永远不会收到这样的数据!(我知道,我知道!)@ScottSauyet-是的,服务器端的错误代码,需要几个月甚至几年的时间才能到达团队并让他们相信这个错误。不可能:(谢谢你的回答,但这不是太多的硬编码吗?我在寻找一个通用的解决方案。