一、基础
export default{
methods:{
canParseToJson(str, parseFlag){
try{
if(typeof JSON.parse(str)==="object" && Object.prototype.toString.call(JSON.parse(str))==="[object Object]"){
return parseFlag===true?JSON.parse(str) : true
}
}catch(e){}
return false
}
}
}
例子:
this.canParseToJson("{a:1}")//true
this.canParseToJson("{a:1}", true)//{a:1}
this.canParseToJson("aaaaa")//false
二、进阶
为了将方法写的更健壮,str参数不一定就只能是字符串,如果直接给过来一个json,也直接返回true或者本身,用以应对后端返回的数据可能是一个json:
{code:200, msg:"成功", list: []}
又或者是json字符串:
'{"code":200,"msg":"成功","list":[]}'
最终代码如下:
export default{
methods:{
canParseToJson(str, parseFlag){
if(this.isJson(str)){
return parseFlag?str : true
}
try{
return parseFlag?JSON.parse(str) : this.isJson(JSON.parse(str))
}catch(e){}
return false
},
isJson(obj){
return typeof obj === 'object' && Object.prototype.toString.call(obj) === '[object Object]'
}
}
}