问题描述:前端如何校验字符串是不是JSON格式的。
今天要临时要下前端的代码,系统之前的输入框是json格式的,需要加上校验,判断有效性。
刚开始是这样的
<html>
<h1> test </h1>
</html>
<script>
function isJson(str){
var obj = JSON.parse(str)
console.info(obj);}
isJson('123');
isJson('{\"name\":\"xx\"}');
isJson('wwww');
</script>
发现类似 ’123‘ 这样的数字居然可以堂而皇之的通过,没有抛出异常。
原因分析:
暂时解决了问题,细心的你一定发现了如果当前字符串是json 那么调用了parse 方法后 返回值 是 objct 类型的。我们加上类型判断可以解决
解决方案:
提示:
var obj=JSON.parse(str);
if(typeof obj === 'object' && obj ){
alert("是json");
}else{
alert("不是是json");
}