2015-10-01 24 views
0

首先,對我的英語感到抱歉..我會盡力用更好的方式表達。JMS反序列化JSON並適合模型類

我正在使用JMSSerializerBundle在Symfony 2.7中構建API Rest。 我得到了與地址屬性分開的客戶模型:(一號線,2號線,城市,POSTAL_CODE,州,COUNTRY_CODE),當我發送的響應,我這樣做:

{ 
"company_name": "Foograde", 
"first_name": "Federico", 
"last_name": "Balderas Mata", 
"email": "[email protected]", 
"address": { 
    "line1": "Gral. Ortega #223D", 
    "city": "Celaya", 
    "state": "Guanajuato", 
    "postal_code": "38010", 
    "country_code": "MX" 
}} 

就像你看到的,我是一個地址對象發送參數:

/** 
* Get address 
* @VirtualProperty 
* @return array 
* @SerializedName("address") 
*/ 
public function getAddress() 
{ 
    return array(
     'line1' => $this->line1, 
     'line2' => $this->line2, 
     'line2' => $this->line3, 
     'city' => $this->city, 
     'state' => $this->state, 
     'postal_code' => $this->postal_code, 
     'country_code' => $this->country_code 
    ); 
} 

但現在我想要做的就是在同一形式的請求,有一個地址對象和分離特性將其插入到數據庫中。

有什麼想法?

+0

我真的不明白你想要什麼,但至少我猜[驗證,序列化和映射json請求以建模類](http://www.inanzzz.com/index.php/post/nx2b/validating- serialising-and-mapping-json-request-to-model-classes)將會派上用場。也可能是該網站中的其他映射和建模示例。 – BentCoder

回答

1

我認爲你應該將地址從客戶轉移到它自己的實體,因此,地址實體和客戶實體具有單向manyToMany地址字段。通過這種方式,您可以創建地址的形式,其嵌入到客戶的形式,而你也可以得到驗證準備好你..

+0

謝謝...我想我要搬到一個地址實體 –

1

從JMSSerializer狀態的文檔:

@VirtualProperty 這個註解可以在方法上定義,以指示方法返回的數據應該顯示爲對象的屬性。

注意:這僅適用於序列化,在反序列化過程中完全忽略。

由於thexurshid29狀態,這是最好的「地址」移動到一個單獨的實體,您可以有JSON輸出保持完全像以前一樣,通過使用serializationgroups(包括/ eclude你想要的字段)

通過這種方式,您還可以通過簡單地使用JMSSerializer反序列化這些json數據,並將這些完全相同的數據反序列化回適當的實體。

+0

謝謝...我想我要搬到一個地址實體 –