在 JMS 中序列化对象时包含一个方法
Include a method when object is serialized in JMS
我有一个方法 returns 一个值:
/**
* @ORM\Table()
* @ORM\Entity(repositoryClass="PersonRepository")
*/
class Person {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
public function getFoo(){
return $this->id + 1;
}
//setters & getters
}
我想在序列化 Person
对象时包含 getFoo()
returns 的值,这样它看起来像这样:
{
'id' : 25
'foo' : 26
}
您需要设置@VirtualProperty
和@SerializedName
。
use JMS\Serializer\Annotation\VirtualProperty;
use JMS\Serializer\Annotation\SerializedName;
class Person {
....
....
....
/**
* @VirtualProperty
* @SerializedName("foo")
*/
public function getFoo(){
return $this->id + 1;
}
....
....
....
}
您可以在此处阅读更多相关信息:http://jmsyst.com/libs/serializer/master/reference/annotations
注意这只适用于序列化而不适用于反序列化。
我有一个方法 returns 一个值:
/**
* @ORM\Table()
* @ORM\Entity(repositoryClass="PersonRepository")
*/
class Person {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
public function getFoo(){
return $this->id + 1;
}
//setters & getters
}
我想在序列化 Person
对象时包含 getFoo()
returns 的值,这样它看起来像这样:
{
'id' : 25
'foo' : 26
}
您需要设置@VirtualProperty
和@SerializedName
。
use JMS\Serializer\Annotation\VirtualProperty;
use JMS\Serializer\Annotation\SerializedName;
class Person {
....
....
....
/**
* @VirtualProperty
* @SerializedName("foo")
*/
public function getFoo(){
return $this->id + 1;
}
....
....
....
}
您可以在此处阅读更多相关信息:http://jmsyst.com/libs/serializer/master/reference/annotations
注意这只适用于序列化而不适用于反序列化。