emberdata 1.13 конвертировать JSON в JSONAPI

я использую Ember Data 1.13.3. и я хочу преобразовать свой старый формат JSON в новый формат JSONAPI, используя normalizeResponse в JSONAPISerializer.

например, у меня есть json из веб-службы, например

{
  user: { id: 1, name: 'wecc', accounts: [1, 2] },
  accounts: [
    { id: 1, email: '[email protected]' },
    { id: 2, email: '[email protected]' }
  ]
}

теперь в моем JSONAPISerializer, как я могу получить формат JSONAPI из моего старого json. я получаю старый формат. но я хочу, чтобы этот формат автоматически преобразовывался в JSONAPI. как ниже один

{
  data: { 
    id: '1', 
    type: 'user', 
    attributes: {
      name: 'wecc'
    }, 
    relationships: {
      accounts: {
        data: [
          { id: '1', type: 'account' },
          { id: '2', type: 'account' }
        ]
      }
    }
  },
  included: [{ 
    id: '1',
    type: 'account',
    attributes: {
      email: '[email protected]'
    }
  }, {
    id: '2',
    type: 'account',
    attributes: {
      email: '[email protected]'
    }
  }]
}

Я нашел некоторую помощь от самого Ember.

http://emberjs.com/blog/2015/06/18/ember-data-1-13-released.html#toc_internal-format-change-to-json-api они рекомендуют использовать нормализовать ответ


person Shiv Kumar Baghel    schedule 06.07.2015    source источник


Ответы (1)


Это не произойдет автоматически. Если вы также контролируете свой REST API, я бы рекомендовал нормализовать данные на самом сервере. В противном случае, как вы предложили, это должно произойти в пределах normalizeResponse, но с написанным специальным кодом, соответствующим вашему формату данных.

Другое решение — пока продолжать использовать RESTSerializer и подождать, пока спецификация JSON API не станет более популярной. Вероятно, в ближайшие месяцы для большинства серверных фреймворков будут выпущены инструменты, обеспечивающие стандартную полезную нагрузку JSON API.

person Pedro    schedule 07.07.2015
comment
спасибо @PedroCheckos ... я нашел способ сделать это. Вы должны изменить свой Ember RESTAdapter на JSONAPIAdapter и в своей библиотеке ember-data (я использую версию 1.13.3 ) измените isNewSerializerAPI: false на true... и, в конце концов, верните один метод в библиотеке с именем _normalizeResponse, консоль возвращает данные, такие как .... console.log( JSON.stringify(documentHash)); , поэтому всякий раз, когда ваш адаптер запросит запрос, это покажет вам формат JSONAPI ваших данных в консоли браузера... - person Shiv Kumar Baghel; 27.07.2015