Symfony varlıklarımı JSON'a serileştirmek için JMSSerializerBundle kullanıyorum. Aşağıdaki sınıf yapısı vardır: JMSSerializerBundle: @Group Ebeveyn üst sınıfı alanlarında çalışmaz
abstract class A {}
abstract class B extends A {}
class C extends B {}
Şimdi sınıfın C
bir nesne seri hale getirmek istiyoruz, bu yüzden yeni bir Grup tanımlamak, diyelim "example_group" let ve bunun gibi @Groups
ek açıklama ayarlayın:
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;
}
Ortaya çıkan serileştirme, yalnızca C::c1
alanını değil, aynı zamanda B::b1
'u da içerir, ancak şaşırtıcı bir şekilde A::a1
'dur. Beklenen davranış bu mu? Dahil olmak için A::a1
'a da ihtiyacım var. Bunu nasıl başarabilirim?
Teşekkür ederiz.
Tüm sınıflar için \ @ExclusionPolicy ("all") bildirirsem, serileştirilmek istediğim tüm öznitelikler için açıkça belirtmedikçe özniteliklerin hiçbiri oluşturulmaz. Her neyse, bunu yapmayı denedim, ancak yine de $ a niteliğini göremiyorum (daha önce olduğu gibi aynı sonuç, $ b ve $ c doğru şekilde işleniyor). Eğer yanılmıyorsam, \ @Grups kullandığınızda \ @ExclusionPolicy gerekli değildir. –
Diziselleştiriciyi aradığınızda grubu nasıl belirlersiniz? – chalasr
Grubu şöyle ayarladım: $ serializer-> serialize ($ data, 'json', SerializationContext :: create() -> setGroups (array ('example_group'))); –