我有一个我想在Ember数据中建模的Session对象。 (实际显示会话,但它是相同的)
服务器中的JSON看起来像这样(无法更改):
{
"metadata": {
"page": 1,
"page_size": 100,
"total_num_objects": 7,
"total_num_pages": 1
},
"result": [
{
"api_path": "/rest/sessions/2",
"end_time": 1412687629.42063,
"hostname": "127.0.0.1",
"id": 2,
"logical_id": "c6656738-4e23-11e4-9017-685b35b63131_0",
"product_name": null,
"product_revision": null,
"product_version": null,
"start_time": 1412687629.26851,
"status": "SUCCESS",
"type": "session",
"user_name": null
},
{
"api_path": "/rest/sessions/3",
"end_time": 1412688377.15329,
"hostname": "127.0.0.1",
"id": 3,
"logical_id": "84707366-4e25-11e4-a659-685b35b63131_0",
"product_name": null,
"product_revision": null,
"product_version": null,
"start_time": 1412688377.11507,
"status": "SUCCESS",
"type": "session",
"user_name": null
},
...
我意识到我需要编写一个自定义RESTSerializer
,但我无法弄清楚我需要做什么才能摆脱元数据+ make ember意识到结果实际上是一个会话。
附带问题:
我可以制作DS.Model.extend
属性,就像我从API获得的属性一样,或者我必须使用CamelCase并使用normalizeHash
答案 0 :(得分:0)
你可能需要做这样的事情:
App.SessionSerializer = DS.RESTSerializer.extend({
normalizePayload: function(payload) {
return {
sessions: payload.result
};
}
});
请参阅:http://emberjs.com/api/data/classes/DS.RESTSerializer.html#method_normalizePayload
关于您的其他问题,请查看DS.ActiveModelAdapter
/ ActiveModelSerializer
。 ActiveModelSerializer
处理JSON中的下划线约定。