在json中由于key是唯一的,如果json字符串中有相同的key,那么使用JSON.parse()转换后只能得到最后一个key值,这时我们可以先使用正则表达式先把相同key的值合并:

let DataDeal = {
            //json对象相同key合并value值
            jsonData: function (s) {
                var kv = {}, m, reg = /"[^"]+":"[^"]+"/gi;
                var m = s.match(reg);

                var o={};
                for(var i=0;i<m.length;i++){
                    kv=m[i].match(/"[^"]+"/gi);
                    var _arr1=[];;
                    for(var j=0;j<kv.length; j++){
                        _arr1.push(kv[j].replace(/"/g,''));
                    }
                    if(_arr1[0] in o){
                        if(typeof(o[_arr1[0]])=='string')
                        {
                            o[_arr1[0]]=[o[_arr1[0]]]
                        };
                        o[_arr1[0]].push(_arr1[1])
                    }else{
                        o[_arr1[0]]=_arr1[1]
                    }
                }
                return o;
            },
        };
console.log(DataDeal.jsonData(toData));

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注