根据kendo模型手动解析json数据

时间:2015-05-12 10:13:09

标签: json parsing data-binding model kendo-ui

Kendo UI中的任何内置即用型解决方案都可以根据schema.model解析JSON数据? 也许像kendo.parseData(json, model)这样会返回对象数组?

2 个答案:

答案 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;
}

其中modelkendo.data.Model定义(或简称为datasource.schema.model),json是原始对象。使用或修改它来接受和返回数组不应该太难,但对于我的用例,我一次只需要一个对象进行解析。