js判断json格式

小知识 08-16 09:40

单纯的用JSON.parse(str)不能完全检验一个字符串是JSON格式的字符串,有许多例外,能够转换成功的有:数字、字符串、布尔、数组、空对象、null、json。  

其中正确的JSON格式有:数组、空对象、json;所以得出以下结论:如果JSON.parse能够转换成功;并且转换后的类型为object 且不等于 null,那么这个字符串就是JSON格式的字符串。

function isJSON(str) {
    if (typeof str == 'string') {
        try {
            var obj=JSON.parse(str);
            if(typeof obj == 'object' && obj ){
                return true;
            }else{
                return false;
            }
        } catch(e) {
            console.log('error:'+str+'!!!'+e);
            return false;
        }
    }
    console.log('It is not a string!')
}