Ember - 如何清理JSON响应

时间:2016-03-30 13:45:51

标签: javascript json ember.js ember-data ember-cli

我对EmberJS很陌生,不幸的是我必须处理不包含根或ids的JSON,而我似乎无法找到任何明确的方法来实现我的目标。 ;我试图这样做,这只是为了清理响应。

我认为我需要使用ember序列化程序来执行此操作。

这是我目前从api/locations获得的内容:

[
  {
    "uri": "/location/1",
    "name": "ATLANTA"
  },
  {
    "uri": "/location/2",
    "name": "NORTH VIRGINIA"
  }
]

我认为我需要它看起来像这样,带有root和id' s:

{
   "locations":[
     {
        "id":"1",
        "uri":"/location/1",
        "name":"ATLANTA"
     },
     {
        "id":"2",
        "uri":"/location/2",
        "name":"NORTH VIRGINIA"
     }
    ]
 }

我在app/serializers/location.js

下添加了一个JSONSerializer
import DS from 'ember-data';

export default DS.JSONSerializer.extend({
    // how can I manufacture an id here, say with index
    // how to I assign it to a root called "locations"
});

仅仅通过包含这个JSONSerializer,我确实在商店中得到了一条记录,但它只是一个,我认为这是因为他们没有ids,否则两个条目都会出现。

only one record and no id

我需要帮助以及如何开始按摩这些数据的示例。我尝试的例子没有做任何事情。

1 个答案:

答案 0 :(得分:1)

似乎JSONSerializer修复了我提到的root问题,但我能够通过在序列化程序上试用可用的方法来解决我的id问题,直到我找到了有效的东西。我的最终解决方案如下:

 export default DS.JSONSerializer.extend({

    normalize: function(typeClass, hash) {
       hash['id'] = parseFloat(hash.uri.match(/\d+/g))
       return this._super.apply(this, arguments);
    }

 });

很简单,但是,哇,我找不到一个展示如何做这样的事情的例子。