我有一个用户指定的 JSON 对象,我试图在浏览器中处理它。
问题是它需要匹配现有对象。
他们不会意外:
- 忘记包含一些字段。
- 拼写字段或故意添加新字段。
有没有办法处理这个?
所以基本上如果我有一个包含 foo 和 bar 成员的对象,如果用户的 json 只是 {} ...并且如果他们不小心发送了类似 {bart: "asdf";} 的东西('bar'上的错字),我想要他们的默认值然后我希望它生成一个异常。
我有一个用户指定的 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()
.