2
JMSSerializerBundleを使用してsymfonyエンティティをJSONにシリアル化しています。私は、以下のクラスの構造を有する:JMSSerializerBundle:@Groupは親の親クラスフィールドでは機能しません
:abstract class A {}
abstract class B extends A {}
class C extends B {}
を今私はクラスC
のオブジェクトをシリアル化するので、私は新しいグループを定義する、のは「example_group」を言わせて、このような@Groups
注釈を設定したいです
abstract class A {
/**
* @Groups({"example_group"})
*/
private $a1;
private $a2;
}
abstract class B extends A {
/**
* @Groups({"example_group"})
*/
private $b1;
private $b2;
}
class C extends B {
/**
* @Groups({"example_group"})
*/
private $c1;
}
結果のシリアル化にはC::c1
フィールドだけでなく、B::b1
も含まれますが、驚くことにA::a1
ではありません。これは期待される行動ですか?私はA::a1
も含める必要があります。それをどうすれば実現できますか?
ありがとうございます。
すべてのクラスの\ @ExclusionPolicy( "all")を宣言すると、直列化したいすべての属性に対して\ @exposeを明示的に宣言しない限り、属性はレンダリングされません。とにかく、私はそうしようとしましたが、私はまだ$ a属性がレンダリングされているのを見ることができません(前と同じ結果、$ bと$ cは正しくレンダリングされます)。私が間違っていない場合、\ @Groupsを使用すると\ @ExclusionPolicyは必要ありません。 –
シリアライザを呼び出すときにグループをどのように設定しますか? – chalasr
これは私がグループを設定する方法です:$ serializer-> serialize($ data、 'json'、SerializationContext :: create() - > setGroups(array( 'example_group')))); –