素材牛VIP会员
json验证的问题,如何验证服务器端返回的json的正确性
 请***g  分类:Node.js  人气:722  回帖:3  发布于6年前 收藏

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

{

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

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

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

讨论这个帖子(3)垃圾回帖将一律封号处理……

Lv4 码徒
谢***1 CEO 6年前#1

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

Lv3 码奴
Go***ng 职业无 6年前#2

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

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

function isJSON(str){
        try {
                JSON.parse(str);
        } catch(e) {
                return false;
        }
        return true;
}
Lv4 码徒
阿***q 站长 6年前#3
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"
      ]
    }
  }
}
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取