後臺返回的map轉成json的形式
// 在前後端互動中,後臺可能由於某種原因,會返回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>