json验证的问题,如何验证服务器端返回的json的正确性

如何验证服务器端返回json数据的正确性.例如和服务器端约定好返回一个

{

"a":{
    "b":["c"]
}

}
如何验证返回的数据中一定有a,a一定是一个对象,且包含一个数组b,数组b中的元素是字符串

除了逐层判断之外有没有什么更加科学一些的方法呢,验证返回的数据是这个模式,而不是在使用的时候报错,导致页面崩溃

回答:

var obj = {
    "a":{
        "b":["c"]
    }
};    // json对象
if(obj['a'] && Array.isArray(obj['a']['b'])){
    // 逻辑处理
}else{
    alert('系统繁忙,请稍后再试');
}

为什么不然后端返回数据的时候,返回一个标识代表请求处理成功还是处理失败呢,如果处理成功,那么返回的数据格式肯定正确.
比如,返回这样的对象

{
  "code": 1,  // 1代表请求成功,data属性中是正确的数据.0代表请求失败,data是失败原因
  "data": {
    "a": {
      "b": [
        "c"
      ]
    }
  }
}

回答:

这个更像是约定吧 如果接口约定的双方实现存在问题 那肯定是没治了

另外如果判断是不是一个JSON,JS可以用异常判断来做

function isJSON(str){
        try {
                JSON.parse(str);
        } catch(e) {
                return false;
        }
        return true;
}

回答:

服务器返回的JSON数据,最好不要使用原始返回的,就算跟服务器约定,也会出现层级过深的问题。
所以需要引入第三方插件去前端处理这些数据,我推荐使用normalizr,因为现在自己都有在用,使用此插件可以很好的解决层级的问题。
插件地址:https://www.npmjs.com/package…

暂无评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注