Как я могу десериализовать строку Json, чтобы получить полиморфный результат, используя Java и библиотеку Джексона?

1

У меня есть класс КОНТЕЙНЕР, содержащий список. BaseClass не является абстрактным классом, но есть 2 подтипа BaseClass: BaseClassA и BaseClassB, каждый из которых имеет дополнительные поля.

У BaseClass есть атрибут enum type, из которого я могу определить, является ли объект BaseClass, BaseClassA или BaseClassB и что я хочу использовать в качестве дискриминатора.

Как я могу сказать Джексону дискриминатор, поэтому, когда он десериализует строку json, он строит правильный объект. В настоящий момент каждый объект создается как BaseClass, поэтому я не могу использовать его в своем Java-коде. Точно так же, как @DiscriminatorFormula & @DiscriminatorValue работает для спящего режима и сущностей

Я нашел этот вопрос: как я могу полиморфную десериализацию Json String с использованием Java и библиотеки Jackson? который является близким, но здесь пользователю нужен только базовый тип.

Теги:
deserialization
polymorphism
jackson

1 ответ

0

Предполагая, что вы, вероятно, решили это, но если не проверить JsonTypeInfo как способ аннотировать классы с подтипами для desrialization. Эта ссылка http://programmerbruce.blogspot.com/2011/05/deserialize-json-with-jackson-into.html имеет хорошее объяснение, которое по-прежнему актуально. Если вы не можете аннотировать свои классы, вы можете использовать конфигурацию для настройки микширования (см. Https://github.com/FasterXML/jackson-docs/wiki/JacksonMixInAnnotations), которые позволяют добавлять аннотации к существующим классам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню