彻底搜索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嵌套模型构造,以及许多其他模式,这些模式在堆栈溢出时被描述为答案,但它们似乎都不起作用或匹配我必须工作的数据结构用。 我甚至在本页的第一个代码块中尝试了匿名函数。 http://emberjs.com/guides/models/defining-models/试图将其转换为我想要的文本。
无论如何,我们非常感谢任何帮助。
答案 0 :(得分:1)
您可以定义自定义数据转换来处理特殊的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')
});
请注意,只要您为descriptionText
使用相同的名称,转换的名称就可以是DS.attr(...)
。
希望它有所帮助。