2013-10-24 59 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

嗯......对我来说不是那么多......我在序列化程序中做了完全相同的事情,但调用_super()的结果是一个已经变平的对象,没有根节点。恐怕这种技术不起作用。 –

+0

我实际上没有对Steve进行测试,但它应该在那里,它可能实际上是serializeIntoHash方法而不是serialize方法,参见上文。 – Kingpin2k