后台返回的map转成json的形式

来源:互联网 发布:诺兰蝙蝠侠三部曲知乎 编辑:程序博客网 时间:2024/05/22 15:42

// 在前后端交互中,后台可能由于某种原因,会返回map类型的数据,因此,前端的开发中,需要解析成标准的JSON的格式来使用;

<script>
  //字符串和数组的方法实现
var obj = '{name=zhangsan,age = 16,  job =IT}';
function formatJSON(str){
var newObj={};
str= str.substring(1,str.length-1);
var reg = /\s+/g;//去除所有空格
str = str.replace(reg,"");
proData = str.split(",");//将字符串转成数组  name=liqin,  age = 12,
for(var i=0,len=proData.length;i<len;i++){// name=liqin, 
var key = proData[i].split("=")[0];//键名
var val = proData[i].split("=")[1];//键值
newObj[key] = val
}
return newObj;
}


console.log(formatJSON(obj))
var getjson = formatJSON(obj)


   for(var attr in getjson){
    console.log(getjson[attr])
    }




 //正则的实现
 // 后台返回的map对象,转成json格式
 var obj2 = '{name=wangwu,age=16,job=IT}';
 function formatJsonMap(obj){
  //分析:将字符串中的{}去除,变成基本的字符串,然后使用正则的方法将map转成标准的json个数 \s匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]
  var json={};
  var newObj= obj.substring(1,obj.length-1);
  var reg = /([^,\s]+)=([^,\s]+)/g;//等号的两边是:非,\s的多个字符
  newObj.replace(reg,function(arg0,arg1,arg2){// arg1第一个分组,arg2第二个分组
  json[arg1] = arg2
  })
  return json;


 }
console.log(formatJsonMap(obj2))
</script>

原创粉丝点击