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

时间:2018-06-14 12:45:44

标签: php symfony jmsserializerbundle

我正在修改使用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端点不会返回新的测试数组。我只能得出结论,在API响应期间没有使用getImagesDataDecode()方法。

如何找出用于返回API数据的方法?

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

1 个答案:

答案 0 :(得分:1)

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

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