今天遇到这样一个问题:
var str="[{productId=1181461914442657793, visitNum=78, productName=麻辣王子}, {productId=1182163138800361474, visitNum=15, productName=荔枝}, {productId=1181472367218651138, visitNum=5, productName=劲仔鱼仔}, {productId=1181477629535035393, visitNum=0, productName=猪肉铺}, {productId=1181476559228346370, visitNum=0, productName=芒果}]";
要把str转换成一个数组,正常的可以通过JSON.parse(str)进行转换,
这需要str为:
str='[{"productId":"1181461914442657793","visitNum":"78","productName":"麻辣王子"},{"productId":"1182163138800361474","visitNum":"15","productName":"荔枝"},{"productId":"1181472367218651138","visitNum":"5","productName":"劲仔鱼仔"},{"productId":"1181477629535035393","visitNum":"0","productName":"猪肉铺"},{"productId":"1181476559228346370","visitNum":"0","productName":"芒果"}]'
所以:首先要把=变成:,其次,就是个键和值加上引号
代码如下:
var str="[{productId=1181461914442657793, visitNum=78, productName=麻辣王子}, {productId=1182163138800361474, visitNum=15, productName=荔枝}, {productId=1181472367218651138, visitNum=5, productName=劲仔鱼仔}, {productId=1181477629535035393, visitNum=0, productName=猪肉铺}, {productId=1181476559228346370, visitNum=0, productName=芒果}]";
str = str.replace(/\=/g,":"); //把所有的=转换为:
var reg = /([^\:\{\}\[\]\,]+)\:([^\:\,\{\}\[\]]*)/g;
str = str.replace (reg, "\"$1\":\"$2\""); //给json加上引号
str=str.replace(/\s+/g,""); //去掉所有的空格
var arr=JSON.parse(str)
console.log(arr)
打印结果如下: