如何访问ember.js中的复杂嵌套json

如何访问ember.js中的复杂嵌套json,ember.js,Ember.js,在彻底搜索stackoverflow并阅读了emberjs.com上的所有文档后,我发现自己陷入了困境。我有一个复杂的json对象,我正试图在我的ember项目中建模和输出它。 我无法控制JSON,否则我会更改它的格式以便更容易理解。也就是说,这是我的问题 我有下面的json [ { "id":1, "catId": "10051", "catUrl": "path/to/location", "childCount": "4", "description

在彻底搜索stackoverflow并阅读了emberjs.com上的所有文档后,我发现自己陷入了困境。我有一个复杂的json对象,我正试图在我的ember项目中建模和输出它。 我无法控制JSON,否则我会更改它的格式以便更容易理解。也就是说,这是我的问题

我有下面的json

[
{
    "id":1,
    "catId": "10051",
    "catUrl": "path/to/location",
    "childCount": "4",
    "description": [{
        "text": "Description Text"
    }],
    "identifier": "UNQ123456",
    "partialResults": "false"
}
]
我想得到的是描述中的文本值。我曾尝试创建emberjs.com上描述的hasMany和belongsTo嵌套模型构造,以及许多其他在堆栈溢出中被描述为答案的模式,但它们似乎都不起作用,也与我必须使用的数据构造不匹配。 我甚至在本页的第一段代码中尝试了匿名函数。试着遍历这个到我想要的文本


无论如何,任何帮助都将不胜感激。

您可以定义自定义数据转换来处理特殊的JSON字段。这可以通过使用
DS.RESTAdapter.registerTransform
函数来完成。类似的内容应该适用于您的用例:

DS.RESTAdapter.registerTransform('descriptionText', {
  serialize: function(data) {
    var text = data[0].text;
    return text;
  },
  deserialize: function(text) {
    var data = [Ember.create({text: text})];
    return data;
  }
});
然后将其用作模型的自定义属性:

App.MyModel = DS.Model.extend({
  ...
  description: DS.attr('descriptionText')
});
请注意,只要对
DS.attr(…)
使用相同的名称,转换的名称可以是其他名称,如
descriptionText


希望有帮助。

您可以定义自定义数据转换来处理特殊的JSON字段。这可以通过使用
DS.RESTAdapter.registerTransform
函数来完成。类似的内容应该适用于您的用例:

DS.RESTAdapter.registerTransform('descriptionText', {
  serialize: function(data) {
    var text = data[0].text;
    return text;
  },
  deserialize: function(text) {
    var data = [Ember.create({text: text})];
    return data;
  }
});
然后将其用作模型的自定义属性:

App.MyModel = DS.Model.extend({
  ...
  description: DS.attr('descriptionText')
});
请注意,只要对
DS.attr(…)
使用相同的名称,转换的名称可以是其他名称,如
descriptionText


希望有帮助。

这已从Ember Data Beta 1.0 Beta 1中删除。该文档提供了一些替代方法,请参阅已从Ember Data Beta 1.0 Beta 1中删除。本文档提供了一些替代方法,请参阅