将 JSON 解析为具有定义的“架构”的对象
Parsing JSON into an object with a defined 'schema'
我有一个用户指定的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()
来简化其中一些代码。
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 比较从函数和生成的日期对象
- 将自定义对象的猫鼬 PUT 实现到复杂架构中时出现问题
- 如何根据“架构”过滤 JSON 对象
- 将 JSON 解析为具有定义的“架构”的对象
- JQuery 插件架构,用于定义对象和变量生命周期
- 为什么要在猫鼬架构中嵌套对象
- 根据 JSON 文件获取对象的架构
- 路由文件中的 ExpressJS 排序架构对象
- 通过REST端点用JSON对象更新Mongoose架构
- 无法实例化猫鼬架构:"对象不是函数
- 使用JSONIX从XML架构创建空对象
- 如何在ExtJS(和Sencha架构师)中显示GridPanel中的嵌套对象
- JavaScript应用程序架构:引用对象属性