我从我们的 API 收到一个 JSON 格式如下
[
{
"id": 45,
"name": "Pasta",
"_order": 0,
"is_hidden": null,
"is_list": false
},
{
"id": 46,
"name": "Salads",
"_order": 1,
"is_hidden": null,
"is_list": false
},
{
"id": 47,
"name": "Dessert",
"_order": 2,
"is_hidden": null,
"is_list": false
}
];
我看到它的标准 RESTAdapter 格式无效,我需要先输入模型的名称。在我的例子中,它可能应该是这样的:
{
"category":
[
{
"id": 45,
"name": "Pasta",
"_order": 0,
"is_hidden": null,
"is_list": false
},
{
"id": 46,
"name": "Salads",
"_order": 1,
"is_hidden": null,
"is_list": false
},
{
"id": 47,
"name": "Dessert",
"_order": 2,
"is_hidden": null,
"is_list": false
}
]
}
那么如何让它在我的适配器中看起来像这样呢?看来我应该使用
DS.RESTSerializer
,但我不知道我应该覆盖哪种方法......
最佳答案
我今天早些时候遇到了这个问题。一个很好的干净的修复方法是定义一个
您的 ApplicationSerializer 的 normalizePayload 方法。它被覆盖了,所以你不会影响其他任何东西。
例如。
App.ApplicationSerializer = DS.RESTSerializer.extend({
normalizePayload: function(type, payload) {
return { category: payload };
}
}
如果您只想在处理的一些有效负载上执行此操作,那么您只需在其中添加一个条件。
App.ApplicationSerializer = DS.RESTSerializer.extend({
normalizePayload: function(type, payload) {
if (type.toString() === 'App.Category') {
return { category: payload };
}
}
}
有关 normalizePayload 方法的更多信息,请参阅 http://emberjs.com/api/data/classes/DS.RESTSerializer.html#method_normalizePayload
关于json - 将 JSON 转换为适合 RESTAdapter EmberJS 的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20410016/