2015-10-01 23 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

谢谢...我想我要搬到一个地址实体 –