【发布时间】:2014-02-26 21:31:05
【问题描述】:
我的客户端 API 以以下格式返回 JSON:
{
"Result": [
{
"member": {
"id": 1,
"name": "Mark Smith",
"email_address": "name@email.com",
"member_type": [
"Premium"
],
"privileges": [
"MEMBER"
]
},
"activites": {
"ActivityId": "15",
"ActivityName": "Tennie"
}
}
],
"ResultCount": 1
}
我需要映射到我的 Ember 应用模型:
App.Member = DS.Model.extend({
memberid: DS.attr('number'),
membername: DS.attr('string'),
memberemail: DS.attr('string'),
membertype: DS.attr('string'),
memberprivileges: DS.attr('number'),
activityID: DS.attr('number')
});
App.MemberSerializer = DS.RESTSerializer.extend({
extractArray: function(store, type, payload, id, requestType){
...
我试图实现一个序列化器来映射 json 和应用程序模型之间的字段,但不确定如何使用 extractArray 来实现,因为我找不到任何关于如何做到这一点的教程/示例,所以有人可以请根据我的客户端 JSON 结构,为我提供如何执行此操作的示例?
我根据 James 的回复做的补充:
App.ArrayTransform = DS.Transform.extend({
deserialize: function (serialized) {
return (Ember.typeOf(serialized) == "array")
? serialized
: []
},
serialize: function (deserialized) {
var type = Ember.typeOf(deserialized)
if (type == 'array') {
return deserialized
} else if (type == 'string') {
return deserialized.split(',').map(function (item) {
return jQuery.trim(item)
});
} else {
return []
}
}
})
App.register("transform:array", DS.ArrayTransform);
App.Member = DS.Model.extend({
cont : DS.attr('array')
});
【问题讨论】: