JMS 序列化期间使用什么方法?

What method is being used during JMS serialization?

我正在修改一个使用 Symfony 2.7 和 JMS Serializer 的 API。我有一个包含一些图像数据的实体。在我的实体定义中,相关字段注释如下:

/**
 * @var string
 *
 * @ORM\Column(name="images_data", type="text")
 * @JMS\Groups({"default", "playlist", "digital_signage", "distributed_item"})
 * @JMS\Type("array")
 * @JMS\Accessor(getter="getImagesDataDecode")
 * @JMS\SerializedName("imagesData")
 */
private $imagesData;

... 我已将 getImagesDataDecode() 方法更改为如下所示:

public function getImagesDataDecode()
{
    return ['testone'=>'a','testtwo'=>'b'];
}

...但是在测试期间,我的 API 端点没有 return 新的测试数组。我只能得出结论,在 API 响应期间未使用 getImagesDataDecode() 方法。

如何找出 return API 数据使用的是哪种方法?

我希望在 return 处理相关数据之前让我的程序进行一些分析和过滤。没有地方插入那个逻辑,看来我暂时倒霉了。

您缺少 @JMS\AccessType 注释来告诉序列化程序使用您的访问器方法。它默认为 property,因此它不使用任何方法,它通过反射使用 属性 本身。

https://jmsyst.com/libs/serializer/master/reference/annotations#accesstype