判断字符串是不是JSON字符串

2020-05-08  本文已影响0人  索哥来了

问题:前端同学在开发中,可能会遇到下面的问题,后台同事返回的某个字段,可能是普通字符串,可能是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('------------------------')

这样就能愉快的处理返回回来的数据了。

上一篇下一篇

猜你喜欢

热点阅读