javascript - 如何验证多个属性是否在 JavaScript 中的 JSON 结构中?

标签 javascript json node.js validation

我正在创建一个模块,该模块接收多个复杂的 JSON 文件,并希望在缺少某些元素时通过一些代码向用户提供反馈。

下面是我现在做的方式,但我不禁认为必须有一种更干净、更简单的方式。

var _und = require("underscore");
//this function takes a list of required attributes and ensures they are present
var check_req_attr = function(config, req_attr, callback) {
    var config_attr = Object.keys(config);
    var absent_attr = _und.difference(req_attr, config_attr); //slightly hacky code that checks to ensure config has correct vars
    if (absent_attr.length !== 0) {
        throw Error("missing following attributes from config:" + absent_attr);
    } else {
        callback();
    };
};

只是感觉……很脏。如果没有真正优雅的方法来做到这一点,我愿意接受对我的代码的批评。谢谢!

最佳答案

  1. 将 JSON 解析为 JS。

    var data = JSON.parse(theJson);

  2. 使用类似的东西:

    function hasKey(obj, key) {
        return typeof obj[key] !== 'undefined';
    };
    
    
    
    function hasKeys(obj, keys) {
    
        for (var i = 1, len = keys.length; i < len; i++) {
            if (!hasKey(obj, keys[i])) {
                return false;
            };
        };
        return true;
    };
    

现在你可以简单地做:

if (hasKeys(data, ["firstKey", "secondKey", "thirdKey"]) {
    console.log("valid");
};

关于javascript - 如何验证多个属性是否在 JavaScript 中的 JSON 结构中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16399605/

相关文章:

javascript - Sencha Touch - View 内的调用功能不会被调用

javascript - 使用不同级别的节点解析 JSON

java - 在保持LogicalTypes的同时将Parquet/Avro GenericRecord写入JSON

node.js - 值没有被插入到 PostgreSQL 数据库中

javascript - ES6 父类覆盖子原型(prototype)

javascript - Angular 6 正确初始化自定义输入组件

javascript - npm install 报错 as '' console.error (`a bug known to break npm. "

node.js - 使用 nginx 反向代理时,nodejs 中未收到自定义 header

javascript - Json Schema 对 Value 字段的限制,可以是 Integer 或 String

ios - 来自 mySQL 数据库 iOS/Swift 的循环 URL