6

私は本当に検索しましたが、シリアライザーを使用して異なる形式の JSON 応答からオブジェクトを取得する適切な例は見つかりませんでした。JSON 応答の形式を変更しない理由は、http://flask.pocoo.org/docs/security/#json-securityで概説されています。

私はまだ JavaScript にあまり詳しくないので、serialize_json.js のフックを理解するのに苦労したか、マッピングを使用する必要があるかもしれません (わかりません)。これは、多くのオブジェクトに対する私の JSON 応答の例です。

{
  "total_pages": 1, 
  "objects": [
     {
      "is_completed": true, 
      "id": 1, 
      "title": "I need to eat"
    }, 
    {
      "is_completed": false, 
      "id": 2, 
      "title": "Hey does this work"
    }, 
    {
      "is_completed": false, 
      "id": 3, 
      "title": "Go to sleep"
    }, 
  ], 
  "num_results": 3, 
  "page": 1
}

ember-data がこれを使用しようとすると、次のエラーが発生します。

DEBUG: -------------------------------
DEBUG: Ember.VERSION : 1.0.0-rc.1
DEBUG: Handlebars.VERSION : 1.0.0-rc.3
DEBUG: jQuery.VERSION : 1.9.1
DEBUG: -------------------------------
Uncaught Error: assertion failed: Your server returned a hash with the key total_pages but you have no mapping for it 

データ ストアのコードを見ると、次のようになります。

Todos.Store = DS.Store.extend({
    revision: 12,
    adapter: DS.RESTAdapter.create({
        mappings: {objects: "Todos.Todo"},
        namespace: 'api'
    })
});

私の質問はtotal_pages、 、num_resultsおよびをどのように処理するpageかです。objectsそして取り敢えず、私は配列をマップすることができるように無視することを意味します。

4

3 に答える 3

1

Ember は、物事がどのように行われるかについてかなりの意見を持っています。Ember データも例外ではありません。Ember チームは、それが最善と考える特定の基準に向けて取り組んでいます。これは、私の意見では、良いことです。

ember の行く先については、こちらの記事をご覧ください。TL;DR API 呼び出しには非常に多くのさまざまな実装があるため、JSON APIのサポートに力を入れています。

私の理解では、あなたが求めていることを行う簡単な方法はありません。最善の策は、独自のカスタム アダプターを作成してシリアル化することです。これはそれほど難しいことではなく、以前にも行われています。Python の Django Tastypie に使用されるTastypie アダプターを確認することをお勧めします。

于 2013-06-09T17:34:55.863 に答える