Привязка данных Джексона не сериализует метаданные типа внутри Collection - PullRequest
0 голосов
/ 31 января 2020

У меня есть абстрактный класс Abst с 3 конкретными классами, расширяющими его.

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonTypeInfo(use = Id.NAME)
@JsonSubTypes({@JsonSubTypes.Type(value = First.class,
                              name = FIRST),
           @JsonSubTypes.Type(value = Second.class,
                              name = SECOND),
           @JsonSubTypes.Type(value = Third.class,
                              name = THIRD)})
public abstract class Abst {
    public static final String FIRST = "first";
    public static final String SECOND = "second";
    public static final String THIRD = "third";

Когда я сериализовал экземпляры типа First.class, Second.class или Third.class, метаданные '@type 'правильно сериализовано как '@type': 'first' или @type: 'second' et c. Однако, когда у меня есть List<Abst>, метаданные не сериализуются.

Я обнаружил, что когда Джексон сериализует классы индивидуально, он использует TypeWrappedSerializer, а когда он сортирует Список, он использует IndexListSerializer с отдельными элементами, сериализуемыми BeanSerializer вместо TypeWrappedSerializer. Есть ли какая-нибудь дополнительная аннотация или что-то, чего мне не хватает выше?

1 Ответ

0 голосов
/ 05 февраля 2020

Я не мог понять, почему это происходит, но я решил ее, просто создав собственный сериализатор, который будет добавлять метаданные во время сериализации. Все работало как есть.

...