Ember - 如何清理 JSON 响应
Ember - how to clean up JSON response
我是 EmberJS 的新手,不幸的是我不得不处理 JSON,它不包含根或 ID,我似乎找不到任何明确的方法来完成我正在做的事情尝试做,这只是为了清理响应。
我假设我需要使用 ember 序列化程序来执行此操作。
这是我目前从 api/locations
:
中得到的
[
{
"uri": "/location/1",
"name": "ATLANTA"
},
{
"uri": "/location/2",
"name": "NORTH VIRGINIA"
}
]
我假设我需要它看起来像这样,具有根和 ID:
{
"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,我就在商店中获得了一条记录,但它只有一条,我认为那是因为它们没有 ID,否则两个条目都会显示。
我需要有关如何开始处理这些数据的帮助和示例。我试过的例子没有做任何事情。
似乎 JSONSerializer 解决了我提到的根本问题,但我能够通过在序列化程序上尝试可用的方法来解决我的 ID 问题,直到找到有效的方法。我的最终解决方案如下所示:
export default DS.JSONSerializer.extend({
normalize: function(typeClass, hash) {
hash['id'] = parseFloat(hash.uri.match(/\d+/g))
return this._super.apply(this, arguments);
}
});
很简单,但是,哇,我找不到一个例子来说明如何做这样的事情。
我是 EmberJS 的新手,不幸的是我不得不处理 JSON,它不包含根或 ID,我似乎找不到任何明确的方法来完成我正在做的事情尝试做,这只是为了清理响应。
我假设我需要使用 ember 序列化程序来执行此操作。
这是我目前从 api/locations
:
[
{
"uri": "/location/1",
"name": "ATLANTA"
},
{
"uri": "/location/2",
"name": "NORTH VIRGINIA"
}
]
我假设我需要它看起来像这样,具有根和 ID:
{
"locations":[
{
"id":"1",
"uri":"/location/1",
"name":"ATLANTA"
},
{
"id":"2",
"uri":"/location/2",
"name":"NORTH VIRGINIA"
}
]
}
我在 app/serializers/location.js
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,我就在商店中获得了一条记录,但它只有一条,我认为那是因为它们没有 ID,否则两个条目都会显示。
我需要有关如何开始处理这些数据的帮助和示例。我试过的例子没有做任何事情。
似乎 JSONSerializer 解决了我提到的根本问题,但我能够通过在序列化程序上尝试可用的方法来解决我的 ID 问题,直到找到有效的方法。我的最终解决方案如下所示:
export default DS.JSONSerializer.extend({
normalize: function(typeClass, hash) {
hash['id'] = parseFloat(hash.uri.match(/\d+/g))
return this._super.apply(this, arguments);
}
});
很简单,但是,哇,我找不到一个例子来说明如何做这样的事情。