在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));