使用JMS Serializer和Symfony动态更改类型

时间:2018-02-19 15:03:16

标签: jmsserializerbundle jms-serializer

我想动态决定JMS Serializer即将序列化的对象类型。

例如,我有两个属性,一个用于存储折扣值,另一个用于折扣类型。如果折扣类型为0,那么折扣价值就是数字(意思是"您作为disocunt收到的这个百分比数")。对于discount_type = 1,您将在discount_value中拥有Money对象(Money对象是金额和货币)。

输出应该如下:

{
 ...
 discounts: [
    {
      value: 10,
      type: 0
    },
    {
      value: {
        money_value: 50,
        money_currency: EUR
      },
      type: 1
    }
 ]
}

有办法吗?我需要在Entity.Class.yml中定义类型,因为我需要稍后进行反序列化。

1 个答案:

答案 0 :(得分:0)

在这种情况下,您可以尝试使用@Discrimantor annotation. 这样您就可以拥有一些抽象的折扣值类及其两个后代,它们具有不同的字段和映射。