我有一个用户指定的JSON对象,我试图在浏览器中处理它。
问题是它需要匹配现有对象。
他们不能不小心:
有办法解决这个问题吗?
所以基本上如果我有一个foo和bar成员的对象,我想要他们的默认值,如果用户的json只是{} ...并且如果他们不小心发送了类似{bart:“asdf”;}的错误信息bar')然后我希望它生成异常。
答案 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()
简化部分代码。