收藏
回答

Key值不带引号的对象字符串该如何转为对象或数组?

[{ name : '学生:' , code: '[12345678]林XX' }]

这是一段字符串我需要把它转为数组或者字符串方便拿到里面的数据

用了JSON.parse会报错 原因是因为这一段的Key值没有引号,不规范

小程序也不支持eval()

那么我该如何转为对象呢?

回答关注问题邀请回答
收藏

3 个回答

  • Q
    Q
    2021-08-26

    用正则简单写了个转对象的例子,你可以试试

    function paseToObj(str){
        let re = /(\S*?) ?: ?\'(\S*?)\'/g;
        let iter = str.matchAll(re);
        let res = {};
        let i = iter.next();
        while(!i['done']){
            res[i['value'][1]] = i['value'][2];
            i = iter.next();
        }
        return res;
    }
    
    let str = `[{ name : '学生:' , code: '[12345678]林XX' }]`;
    console.log(paseToObj(str));
    


    2021-08-26
    有用 1
    回复 1
    • WwJD
      WwJD
      2021-08-26
      感谢! 我试试!
      2021-08-26
      回复
  • optimistic
    optimistic
    2021-08-25

    让后端给你转规范来

    2021-08-25
    有用 1
    回复 2
    • WwJD
      WwJD
      发表于移动端
      2021-08-25
      这个。。做不到 因为不是我的接口
      2021-08-25
      回复
    • optimistic
      optimistic
      2021-08-26回复WwJD
      那就自己写一个算法切割字符串拿出来
      2021-08-26
      回复
  • WwJD
    WwJD
    发表于移动端
    2021-08-25
    没有简单的解决办法的话,是不是只能用拼接两个引号上去然后再json.parse?
    2021-08-25
    有用
    回复 1
    • optimistic
      optimistic
      2021-08-26
      不行的 JSON.parse要求严格json
      2021-08-26
      回复
登录 后发表内容