【发布时间】:2020-02-12 05:34:10
【问题描述】:
服务器返回一个 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\":\"{\\\"notification_type\\\":\\\"{\\\\\\\"InternalKey\\\\\\\":\\\\\\\"InternalValue\\\\\\\"}\\\"}\"}}";
console.log("Proper String = ");
console.log(properString);
var firstLevelObject = JSON.parse(properString);
console.log("First Level Object = ");
console.log(firstLevelObject);
var secondLevelObject = JSON.parse (firstLevelObject.payload.data);
console.log("Second Level Object = ");
console.log(secondLevelObject);
var thirdLevelObject = JSON.parse(secondLevelObject.notification_type);
console.log("Third Level Object = ");
console.log(thirdLevelObject);
但是,我无法将不正确的字符串从服务器转换为变量properString 中定义的正确转义字符串,以便正确构造可以遍历的 JSON。如何使用正确的转义字符转换字符串?
参考来源: 我已经参考了this 的答案来了解应该如何添加嵌套转义字符,但答案并没有说明如何进行转换。
【问题讨论】:
-
第一个问题:你能拒绝维护服务器代码的人吗?理想情况下,您永远不会收到这样的数据! (我知道,我知道!)
-
@ScottSauyet - 是的,来自服务器端的错误代码,需要数月甚至数年才能到达团队并让他们相信这个错误。不可能:(
标签: javascript jquery json parsing recursion