gpt4 book ai didi

php - JMSSerializerBundle:@Group 不处理父类的父类字段

转载 作者:搜寻专家 更新时间:2023-10-31 21:53:36 24 4
gpt4 key购买 nike

我正在使用 JMSSerializerBundle 将我的 symfony 实体序列化为 JSON。我有以下类结构:

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

use JMS\Serializer\Annotation\ExclusionPolicy

/**
* @ExclusionPolicy("all")
*/
abstract class A
{
// ...
}

/**
* @ExclusionPolicy("all")
*/
abstract class B extends A
{
// ...
}

/**
* @ExclusionPolicy("all")
*/
class C extends B
{
// ...
}

通过使用组 example_group 序列化 C,您应该获得通过 @Groups 注释公开的所有属性。

因此对于您的实例,您应该呈现 $a1$b1$c1

关于php - JMSSerializerBundle:@Group 不处理父类的父类字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36370858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com