json内的字符串形式的json如何反序列化

ttqtc
  • 4
新手上路,请多包涵

在一个json中,有个字符串形式的值,但这个值("{b:1}")本身也是个json,如何在反序列化的时候,将这个字符串形式的值(即a)转为json对象

原始json对象

{a:"{b:1}"}

希望反序列化成的json对象

{a:{b: 1}}

回复
阅读 1.2k
4 个回答

1.这个字段的数据提出来手动再转一次。
2.或者让前端传正确的json。

这个字符串也不是合法的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}}

1、通过正则替换成正确的
2、一步一步的转,先整个转JSON,再拿到a的字符串转JSON

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏