如何检查一个值是否是json对象?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我的服务器端代码返回一个成功的json对象的值,失败时返回一个字符串'false'。现在我该如何检查返回的值是否是json对象?

提问于
用户回答回答于

jQuery.parseJSON()应该返回一个类型为“object”的对象,如果字符串是JSON,那么你只需要检查类型 typeof

var response=jQuery.parseJSON('response from server');
if(typeof response =='object')
{
  // It is JSON
}
else
{
  if(response ===false)
  {
     // the response was a string "false", parseJSON will convert it to boolean false
  }
  else
  {
    // the response was something else
  }
}
用户回答回答于

我得到了一个

     "Unexpected Token <" 

Chrome中出现错误。这是因为一旦解析出现错误并且出现未知字符,就会抛出错误。但是,如果仅通过ajax返回字符串值(如果您使用PHP或ASPX处理ajax请求,并且可能会或可能不会根据条件返回JSON,这会非常有用)

解决方案非常简单,可以执行以下操作来检查它是否是有效的JSON返回

       var IS_JSON = true;
       try
       {
               var json = $.parseJSON(msg);
       }
       catch(err)
       {
               IS_JSON = false;
       }                

正如我之前所说的,如果要从AJAX请求中返回字符串类型的东西,或者要返回混合类型,则这是解决方案。

扫码关注云+社区