我正在创建一个模块,该模块接收多个复杂的 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();
};
};
只是感觉……很脏。如果没有真正优雅的方法来做到这一点,我愿意接受对我的代码的批评。谢谢!
最佳答案
将 JSON 解析为 JS。
var data = JSON.parse(theJson);
使用类似的东西:
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/