• 4
  • 新人请关照

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

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

原始json对象

{a:"{b:1}"}

希望反序列化成的json对象

{a:{b: 1}}

阅读 149
评论
    4 个回答

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

      • 2.3k

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

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

            撰写回答

            登录后参与交流、获取后续更新提醒