1

PHP、Symfony、JMSSerializerBundle。JMSシリアライザの選択的シリアル化

UserオブジェクトをOrganizationオブジェクトのIDにシリアル化したいのですが、Userオブジェクトが他のオブジェクトに属している場合は、デフォルトのシリアル化を使用します。

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

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

妥当な努力で可能ですか?

+0

こんにちは。役に立った場合、私の答えを受け入れるか、必要に応じていくつかの変更を提案することができます:) –

答えて

3

Userオブジェクトをシリアル化から除外し、ユーザーID(ユーザーIDなど)を返す仮想プロパティを追加することができます。

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(); 
    } 
    ... 
} 
+0

私はこの目的のためにカスタムタイプを作成しましたが、私の意見ではあなたの答えはより明確です。ありがとう! –

+0

ありがとう!元の質問の中にあなたの解を書くことができます。それは役に立つかもしれない:) –

関連する問題