将嵌套json映射到ember数据模型

将嵌套json映射到ember数据模型,json,ember.js,ember-data,Json,Ember.js,Ember Data,我没有使用RestaAdapter,所以我创建了Ember对象,并使用RebookClass方法和jquery ajax函数进行ajax请求,代码如下: OlapApp.Dimenssions = Ember.Object.extend({}); OlapApp.Dimenssions.reopenClass({ measure:Ember.A(), find:function(cubeUniqueName){ var c = Ember.A(); var xhr = $.aja

我没有使用RestaAdapter,所以我创建了Ember对象,并使用RebookClass方法和jquery ajax函数进行ajax请求,代码如下:

OlapApp.Dimenssions = Ember.Object.extend({});
OlapApp.Dimenssions.reopenClass({
measure:Ember.A(),
find:function(cubeUniqueName){
    var c = Ember.A();
    var xhr = $.ajax({
        type: 'POST',
        dataType: 'json',
        contentType: 'application/json',
        url: 'http://localhost:9095/service.asmx/getDimension',
        data: '{"cubeUniqueName":"'+cubeUniqueName+'"}',
        success: function(response) {
            var data = JSON.parse(response.d);

            $.each(data.hierarchies,function(i,v) {
             c.pushObject(OlapApp.Dimenssions.create(v));
            });
            console.log(c);
        }
    });
    return c;
}
});
OlapApp.dimensions.find()将服务器响应称为json时,如下所示:

{
"uniqueName": "[Customers] = [Database].[Cube 2]",
"name": "Customers",
"caption": "Customers",
"dimensionUniqueName": null,
"description": "Description",
"levelUniqueName": null,
"hierarchyUniqueName": null,
"visible": true,
"hierarchies": [
    {
        "uniqueName": "[Customers]",
        "name": "Customers",
        "caption": "Customers",
        "dimensionUniqueName": "[Customers]",
        "levels": [
            {
                "uniqueName": "[Customers].[(All)]",
                "name": "(All)",
                "caption": "(All)",
                "description": "Description",
                "hierarchyUniqueName": "[Customers]",
                "dimensionUniqueName": "[Customers]",
                "visible": true
            },
            {
                "uniqueName": "[Customers].[Country]",
                "name": "Country",
                "caption": "Country",
                "description": "Description",
                "hierarchyUniqueName": "[Customers]",
                "dimensionUniqueName": "[Customers]",
                "visible": true
            }
        ]
    }
]
}
第一个问题是,我无法在carray中正确地推送json,因此我尝试为此创建一个模型,模型代码是:

OlapApp.RootMembers = DS.Model.extend({

id:DS.attr("number"),
uniqueName:DS.attr('string'),
name:DS.attr('string'),
caption:DS.attr('string'),
dimensionUniqueName:DS.attr('string'),
description:DS.attr('string'),
levelUniqueName:DS.attr('string'),
hierarchyUniqueName:DS.attr('string')

});

OlapApp.Levels = DS.Model.extend({

id:DS.attr("number"),
uniqueName:DS.attr('string'),
name:DS.attr('string'),
caption:DS.attr('string'),
hierarchyUniqueName:DS.attr('string'),
dimensionUniqueName:DS.attr('string'),
visible:DS.attr('boolean'),
description:DS.attr('string')

});

OlapApp.Hierarchies = DS.Model.extend({

id:DS.attr("number"),
uniqueName:DS.attr('string'),
name:DS.attr('string'),
caption:DS.attr('string'),
dimensionUniqueName:DS.attr('string'),
levels:DS.hasMany(OlapApp.Levels,{embedded:always}),
rootMembers:DS.hasMany(OlapApp.RootMembers,{embedded:always})

});
您可以看到从服务器返回的真实json

但是如何将这个json映射到这些模型呢?如果我不能映射到模型,我可以将嵌套的json映射到Ember.Object

this.set('yourModelClass', yourArray.props);
正如您所说,所有json数据都在数组
'C'


正如您所说,您在数组中拥有所有json数据,
'C'

我可以用这行代码解决我的问题:

var data = JSON.parse(response.d);
c.pushObject(Ember.Object.create(data));

我可以用这行代码解决我的问题:

var data = JSON.parse(response.d);
c.pushObject(Ember.Object.create(data));

我试着用你们的方式,但我有点头疼,我把从服务器返回的真正的json粘贴到了。这个json有多个层次、层次和维度,我如何将它映射到一个模型(我可以使用它的任何模型)。我想用这个json创建树状视图。我试着用你们的方式,但我有点头疼,我把从服务器返回的真正的json粘贴到了。这个json有多个层次、层次和维度,我如何将它映射到一个模型(我可以使用它的任何模型)。我想用这个json创建树视图。