json - 将 JSON 转换为适合 RESTAdapter EmberJS 的格式

标签 json ember.js ember-data

我从我们的 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/

相关文章:

php - 如何对带有法语口音的数组进行 JSON 编码?

javascript - 所有值的 ember.js 观察者

java - 如何为以下 json 创建 POJO?

java - Gson Instance Creator 创建了实例,但字段为空

javascript - Ember 嵌套路由动态段

ember.js - emberjs 无法克隆未实现 Ember.Copyable 的 Ember.Object

ember.js - 在 ember 中保存模型时尝试调用 loadedData

ember.js - 在 BOTH 中保存关系以 Ember Data 结束

javascript - 是否可以使用循环填充 jstree?

ember.js - 当 View 插入 Collection View 时,单击事件不会触发