Результат WEB API JSON с именем объекта

Я работаю с Web Api и Ember JS, все работало хорошо, пока я не начал использовать Ember Data, для которого, похоже, требуется имя объекта, включенное в json.

Как я могу добавить это?

В настоящее время получают:

[
  {
    "id": 1,
    "title": "maxima",
    "subTitle": null,
    "description": "Maxima de boot",
    "image1": null,
    "image2": null,
    "active": false,
    "skipper": null
  },
  {
    "id": 2,
    "title": "beatrix",
    "subTitle": null,
    "description": "Beatrix de boot",
    "image1": null,
    "image2": null,
    "active": false,
    "skipper": null
  }
]

Огромное спасибо!


person mausinc    schedule 09.06.2014    source источник


Ответы (3)


Много поработав с Web API и Ember Data, вам будет проще исправить клиентскую часть json с помощью сериализатора. Предполагая, что вы находите сообщения, `this.store.find('post') вы должны создать для него собственный сериализатор:

App.PostSerializer = DS.RESTSerializer.extend({
   extractArray: function(store, type, payload) {
    payload = {posts: payload};
    return this._super(store, type, payload);
  }
});

Пример: http://emberjs.jsbin.com/OxIDiVU/623/edit

Подробнее об этом (и других методах) читайте здесь http://emberjs.com/api/data/classes/DS.RESTSerializer.html#method_extractArray и здесь https://github.com/emberjs/data/blob/master/TRANSITION.md

person Kingpin2k    schedule 09.06.2014

Данные Ember не знают, как сопоставить эти данные, вместо этого ваш json должен выглядеть так.

{ blogs: [ 
  { "id": 1, "title": "maxima", "subTitle": null, "description": "Maxima de boot", "image1": null, "image2": null, "active": false, "skipper": null },
  { "id": 2, "title": "beatrix", "subTitle": null, "description": "Beatrix de boot", "image1": null, "image2": null, "active": false, "skipper": null } ] 
}

Теперь Ember знает, что объекты с сервера должны быть сопоставлены с моделью блогов.

person MartinElvar    schedule 09.06.2014
comment
Привет, Мартин, спасибо за ответ! Да, я знаю, проблема в том, что поведение веб-API по умолчанию выводит вышеуказанный json без имени объекта, я хочу знать, как изменить вывод в веб-API в правильный формат. - person mausinc; 09.06.2014
comment
Вы можете решить эту проблему с помощью решения, предоставленного по адресу: emadibrahim.com/2014/04/09/ Однако есть еще одна проблема, потому что это решение будет работать для GET, для других VERB вы получите null на стороне сервера. - person codebased; 14.07.2014

Я новичок в этом и никогда раньше не работал с Ember, но... Вместо того, чтобы возвращать массив "вещевых" объектов, не могли бы вы изменить код, чтобы он возвращал объект объект, который внутри просто содержит массив объектов типа "вещь"? Затем я ожидаю, что сериализатор json по умолчанию позаботится об этом за вас.

person djikay    schedule 09.06.2014