问题:前端同学在开发中,可能会遇到下面的问题,后台同事返回的某个字段,可能是普通字符串,可能是json字符串,这种情况不科学,但是也确实遇到过。
// 获取数据type
getDataType: (data) => {
return Object.prototype.toString.call(data).toLowerCase().slice(8, -1);
},
// 判断字符串 是不是 json字符串
isJsonStr: function(str) {//下面用到this,这里不能箭头
if(str && typeof str == 'string'){
try{
return this.getDataType(JSON.parse(str));
}catch(e){
console.log(e);
return false;
}
}else{
return false;
}
},
下面是运行结果:
console.log('-number-----------------------')
console.log(this.$cf.isJsonStr(123)); //false,首先就不是字符串,下面的很多false同理
console.log(this.$cf.isJsonStr('123')); //number
console.log('-null-----------------------')
console.log(this.$cf.isJsonStr(null)); //false
console.log(this.$cf.isJsonStr('null')); //null
console.log('-undefined-----------------------')
console.log(this.$cf.isJsonStr()); //false
console.log(this.$cf.isJsonStr(undefined)); //false
console.log(this.$cf.isJsonStr('undefined')); //false(理由同下面'abc')
console.log('-string-----------------------')
console.log(this.$cf.isJsonStr('abc')); //fasle(进入catch,abc不能用JSON.parse)
console.log(this.$cf.isJsonStr('"abc"')); //string
console.log('-boolean-----------------------')
console.log(this.$cf.isJsonStr(true)); //false
console.log(this.$cf.isJsonStr('true')); //boolean
console.log('-array-----------------------')
console.log(this.$cf.isJsonStr('[]')); //array
console.log(this.$cf.isJsonStr([])); //false
console.log('-object-----------------------')
console.log(this.$cf.isJsonStr('{}')); //object
console.log(this.$cf.isJsonStr({})); //false
console.log('------------------------')
这样就能愉快的处理返回回来的数据了。
网友评论