Поддержка Джексоном полиморфизма без аннотаций и выделенных полей бинов - PullRequest
3 голосов
/ 02 декабря 2011

Есть ли способ выполнить сериализацию / десериализацию в Джексоне полиморфных классов без использования аннотаций или специализированных полей компонента?Я должен поддерживать иерархии классов, которые я не могу изменять и не хочу использовать аннотации.

Я хотел бы иметь возможность назначить синтетическое имя, которого не будет в классах, которые я сериализую /десериализация, которая будет вставлена ​​в представление JSON и использована для идентификации типа.

Ответы [ 2 ]

3 голосов
/ 03 декабря 2011

Если дополнения вам не по вкусу, ничего предопределенного для передачи не существует, но вы можете сравнительно легко добиться этого, подклассифицировав JacksonAnnotationIntrospector и настроив с ним маппер.

В вашей реализации вы можете переопределить все аспекты доступа к аннотациям: в вашем случае, вероятно, достаточно переопределить findTypeResolver() (и, если вы хотите переопределения для каждого свойства, 'findPropertyTypeResolver ()').Затем метод может использовать любой механизм, который вы хотите создать TypeResolverBuilder (наиболее вероятно StdTypeResolverBuilder), который содержит ту же информацию, что и обычно из аннотации @JsonTypeInfo.

0 голосов
/ 19 февраля 2013

Для тех, кто ищет проблемы полиморфного json unmarshaling, вы должны прочитать этот пост , в котором приведены отличные примеры и обходные пути для предупреждений сериализации / десериализации JSON.

И если mixins (шаг 5 в вышеупомянутом post ) - это не то, что вы ищете, чем перейти к принятому ответу StaxMan .

...