JMS Serializer选择性序列化

时间:2017-06-28 15:04:48

标签: php symfony serialization jmsserializerbundle jms-serializer

PHP,Symfony,JMSSerializerBundle。

我想将User对象内的Organization对象序列化为其ID,但当User对象属于其他对象时,使用默认序列化。

public class Organization {
   // type is User   
   $user;  -> "123123"
...
}

public class Other {
   // type is User   
   $user;  -> "{id: 123123, name: John, ...}"
...
}

是否可以通过合理的努力?

1 个答案:

答案 0 :(得分:3)

您可以从序列化中排除User个对象,并添加一个将返回用户ID的虚拟属性(您可以将其称为userId,user或任何您想要的对象)。

use JMS\Serializer\Annotation\VirtualProperty;
use JMS\Serializer\Annotation\Exclude;

public class Organization {

   /**
    * ...
    * @Exclude
    */ 
    $user;

  /**
   * @VirtualProperty
   * @SerializedName("user")
   */
   public function getUserId()
   { 
      return $this->user->getId(); 
   }
    ...
}