将 JSON 解析为具有定义的“架构”的对象

Parsing JSON into an object with a defined 'schema'

本文关键字:架构 对象 定义 JSON      更新时间:2023-09-26

我有一个用户指定的JSON对象,我正在尝试在浏览器中处理它。

问题是它需要匹配现有对象。

他们不会意外地:

  • 忘记包含一些字段。
  • 拼写错误字段或故意添加新字段。

有没有办法解决这个问题?

所以基本上如果我有一个带有 foo 和 bar 成员的对象,如果用户的 json 只是 {},我希望它们的默认值......如果他们不小心发送了类似 {bart: "asdf";}("bar"上的错别字(然后我希望它生成一个异常。

var default_object = { ... };
var allowed_keys = [ "key1", "key2", ... ];
var new_object = default_object.clone();
for (var key in json_object) {
    if (json_object.hasOwnProperty(key)) {
        if (allowed_keys.indexOf(key) == -1) {
            // Report error here
        } else {
            new_object[key] = json_object[key];
        }
    }
}

有关如何编写我上面使用的clone方法,请参阅此处。如果使用 jQuery,则可以通过使用 $.extend() 来简化其中一些代码。