在一个json中,有个字符串形式的值,但这个值("{b:1}")本身也是个json,如何在反序列化的时候,将这个字符串形式的值(即a)转为json对象
原始json对象
{a:"{b:1}"}
希望反序列化成的json对象
{a:{b: 1}}
这个字符串也不是合法的json格式。没法改格式的话就只能手动转成合法的然后JSON.parse。或者eval,不过不是很建议。
var data = {
a: "{b: 1}"
}
data.a = eval('('+data.a+')');
function strToData(data) {
let keys = Object.keys(data);
keys.map(key => {
if (typeof data[key] == 'string') {
data[key] = eval(`(${data[key]})`)
}
})
return data;
}
let data = {a: "{b:1}",c: "{d:2}"};
strToData(data) // {a: {b:1},c: {d:2}}
8 回答6.5k 阅读
4 回答704 阅读✓ 已解决
2 回答3.4k 阅读
3 回答1.9k 阅读✓ 已解决
1 回答2.2k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
1 回答972 阅读✓ 已解决
1.这个字段的数据提出来手动再转一次。
2.或者让前端传正确的json。