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

问题描述 投票:1回答:1

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

例如,我有两个属性,一个用于存储折扣值,另一个用于折扣类型。如果折扣类型为0,则折扣价值仅为数字(表示“您作为代理商收到的此百分比数”)。对于discount_type = 1,您将在discount_value中拥有Money对象(Money对象是金额和货币)。

输出应该如下:

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

有没有办法做到这一点?我需要在Entity.Class.yml中定义类型,因为我需要稍后进行一些反序列化。

jmsserializerbundle jms-serializer
1个回答
0
投票

对于这种情况,你可以尝试使用@Discrimantor annotation.这样你就可以有一些抽象的折扣价值类和它的两个后代,具有不同的字段和映射。

© www.soinside.com 2019 - 2024. All rights reserved.