【问题标题】:ember data custom serializer for a json用于 json 的 ember 数据自定义序列化程序
【发布时间】:2014-10-14 03:46:27
【问题描述】:

我有一个要在 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,但我不知道我需要做什么才能摆脱元数据 + 让 ember 意识到结果实际上是一个会话。

附加问题: 我可以让DS.Model.extend 属性像我从 API 中得到的一样,还是我必须使用 CamelCase 并使用 normalizeHash

【问题讨论】:

    标签: json ember.js


    【解决方案1】:

    你可能需要做这样的事情:

    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 / ActiveModelSerializerActiveModelSerializer 处理 JSON 中的下划线约定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      • 2019-05-07
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      相关资源
      最近更新 更多