不负相思意
function isJSON(str) { if (typeof str == 'string') { try { JSON.parse(str); return true; } catch(e) { console.log(e); return false; } } console.log('It is not a string!') }以上try/catch的确实不能完全检验一个字符串是JSON格式的字符串,有许多例外:JSON.parse('123'); // 123JSON.parse('{}'); // {}JSON.parse('true'); // trueJSON.parse('"foo"'); // "foo"JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]JSON.parse('null'); // null仔细看看了看比较靠谱的可能是通过正则做判断,但是正则要写的全面才行,下边是一个:function isJSON (str, pass_object) { if (pass_object && isObject(str)) return true; if (!isString(str)) return false; str = str.replace(/\s/g, '').replace(/\n|\r/, ''); if (/^\{(.*?)\}$/.test(str)) return /"(.*?)":(.*?)/g.test(str); if (/^\[(.*?)\]$/.test(str)) { return str.replace(/^\[/, '') .replace(/\]$/, '') .replace(/},{/g, '}\n{') .split(/\n/) .map(function (s) { return isJSON(s); }) .reduce(function (prev, curr) { return !!curr; }); } return false;}这个是github上别人写的一段正则,我也没有深入验证,只是提供一个思路,也可以试试使用这个叫做is-json的库,但是可能也不全面,仅供参考。