Kendo UI中的任何内置即用型解决方案都可以根据schema.model
解析JSON数据?
也许像kendo.parseData(json, model)
这样会返回对象数组?
答案 0 :(得分:1)
我实际上在你发布它的那天看到了你的帖子,但没有答案。作为重构的一部分,我只需要自己解决这个问题。我的解决方案是DataSources,而不是直接用于模型。
kendo.data.DataSource.prototype.parse = function (data) {
return this.reader.data(data);
// Note that the original data will be modified. If that is not what you want, change to the following commented line
// return this.reader.data($.extend({}, data));
}
// ...
someGrid.dataSource.parse(myData);
如果您想直接使用模型,您需要查看kendo.data.js中的DataReader类并使用类似的逻辑。不幸的是,DataReader采用模式而不是模型,并且处理模型的部分不是用它自己的方法提取的。
答案 1 :(得分:1)
我正在寻找类似的东西,并且找不到任何内置的东西。但是,使用Model.set
显然使用了每个字段的解析逻辑,所以我最终编写了这个非常好用的函数:
function parse(model, json) {
// I initialize the model with the json data as a quick fix since
// setting the id field doesn't seem to work.
var parsed = new model(json);
var fields = Object.keys(model.fields);
for (var i=0; i<fields.length; i++) {
parsed.set(fields[i], json[fields[i]]);
}
return parsed;
}
其中model
是kendo.data.Model
定义(或简称为datasource.schema.model
),json
是原始对象。使用或修改它来接受和返回数组不应该太难,但对于我的用例,我一次只需要一个对象进行解析。