2013-10-24 15 views
15

私は、POST/PUT動詞で、次のようにJSONを見込んでWebサービスを消費しています:削除JSONルート要素

{ 
    "id":"CACTU", 
    "companyName": "Cactus Comidas para llevar", 
    "contactName": "Patricio Simpson", 
    "contactTitle": "Sales Agent", 
    "address": "Cerrito 333", 
    "city": "Buenos Aires", 
    "postalCode": "1010", 
    "country": "Argentina", 
    "phone": "(1) 135-5555", 
    "fax": "(1) 135-4892" 
} 

しかし、エンバーデータは次のようにJSONを送信します:

{ 
    "customer": 
    { 
     "id":"CACTU", 
     "companyName": "Cactus Comidas para llevar", 
     "contactName": "Patricio Simpson", 
     "contactTitle": "Sales Agent", 
     "address": "Cerrito 333", 
     "city": "Buenos Aires", 
     "postalCode": "1010", 
     "country": "Argentina", 
     "phone": "(1) 135-5555", 
     "fax": "(1) 135-4892" 
    } 
} 

POST/PUT操作を送信するときに「customer」ルート要素を削除する方法はありますか。あなたは、シリアル化の方法のいずれかを上書きしたいと思う

+0

このスレッドを見るhttp://stackoverflow.com/questions/17429426/ember-js-rest-adapter-without-json-root – melc

+0

@melcはGETリクエストのみを参照しているようです – Merrin

答えて

16

、私はserializeIntoHashが働くかもしれないと思う:

App.CustomerSerializer = DS.RESTSerializer.extend({ 
    serializeIntoHash: function(hash, type, record, options) { 
    Ember.merge(hash, this.serialize(record, options)); 
    } 
}); 

これは次のようになり、通常のserializeIntoHashである代わりに:

serializeIntoHash: function(hash, type, record, options) { 
    hash[type.typeKey] = this.serialize(record, options); 
    } 

追加のドキュメントここに見つけることができます:

https://github.com/emberjs/data/blob/v2.1.0/packages/ember-data/lib/serializers/rest-serializer.js#L595

+0

私は恥ずかしいほど簡単です。 – Merrin

+0

Ummm ...私にとってはそれほど多くはありません...私はシリアライザで全く同じことをしましたが、_super()を呼び出した結果は、ルートノードなしですでに平坦化されているオブジェクトです。私はこのテクニックがうまくいかないことに気づいています。 –

+0

私は実際にスティーブをテストしていませんでしたが、そこにあったはずですが、実際にはserializeメソッドの代わりにserializeIntoHashメソッドがあるかもしれません。 – Kingpin2k

関連する問題