将JSON解析为具有已定义“模式”的对象

时间:2013-10-10 23:51:32

标签: javascript json

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

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

他们不能不小心:

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

有办法解决这个问题吗?

所以基本上如果我有一个foo和bar成员的对象,我想要他们的默认值,如果用户的json只是{} ...并且如果他们不小心发送了类似{bart:“asdf”;}的错误信息bar')然后我希望它生成异常。

1 个答案:

答案 0 :(得分:0)

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方法,请参阅here。如果您使用jQuery,则可以使用$.extend()简化部分代码。