您的位置:首页 > Web前端 > JavaScript

jsp页面把获取的map数据转换成json格式的数据来使用

2017-09-29 10:24 776 查看
我是在jsp页面写的js,通过var map="${xxx}";获取到了格式为

[{amount=1, progress=00, label=项目立项}, {amount=1, progress=01, label=招标采购}, {amount=1, progress=02, label=建设实施}, {amount=1, progress=03, label=用户验收}, {amount=1, progress=04, label=信息化和技防验收}, {amount=1, progress=05, label=联合验收}, {amount=2, progress=06, label=运维服务}]


的map数据,js不可以直接把这数据拿来使用,这里我用正则的方法先把这数据转成json格式的字符串,如下:

var map="[{amount=1, progress=00, label=项目立项}, {amount=1, progress=01, label=招标采购}, {amount=1, progress=02, label=建设实施}, {amount=1, progress=03, label=用户验收}, {amount=1, progress=04, label=信息化和技防验收}, {amount=1, progress=05, label=联合验收}, {amount=2, progress=06, label=运维服务}]";
console.log(map);
var jsonStr=map.replace(/([\u4e00-\u9fa5]+)/g,"\"$1\"").replace(/=/g,":");//第一种正则方法,把中文字符用双引号包起来,$1是小括号里的内容,把=替换成:
console.log(jsonStr);
var jsonStr2=map.replace(/[\u4e00-\u9fa5]+/g,function(str){return '"'+str+'"'}).replace(/=/g,":");//第二种正则,第一个参数是中文字符的正则,第二个参数是一个函数,可以用此函数的返回值替换字符串中指定的子字符串,函数中str即原来的中文字符串的内容,然后把=替换成:
console.log(jsonStr2);
var jsonStr3=map.replace(/=/g,":\"").replace(/}/g,"\"}").replace(/,/g,"\",").replace(/}"/g,"}");
console.log(jsonStr3);//第三种正则,比较简单,把=替换成:",然后把}替换成"},接着把,替换成",,最后把}"替换成}
好了,现在原来的数据已经转成json格式的数据:

[{amount:1, progress:00, label:"项目立项"}, {amount:1, progress:01, label:"招标采购"}, {amount:1, progress:02, label:"建设实施"}, {amount:1, progress:03, label:"用户验收"}, {amount:1, progress:04, label:"信息化和技防验收"}, {amount:1, progress:05, label:"联合验收"}, {amount:2, progress:06, label:"运维服务"}]


接下来就可以转成对象使用啦:

var jsonObj=eval(jsonStr);
console.log(jsonObj);




比如可以遍历它获取其中的某个数据:
var aaa=[];
for(var i=0;i<jsonObj.length;i++){
var obj={};
obj.value=jsonObj[i].amount;
obj.name=jsonObj[i].label;
aaa.push(obj3);
}
console.log(aaa);


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据 jsp json javascript map