Как сериализовать подтип, как будто это супертип с Джексоном - PullRequest
0 голосов
/ 23 октября 2019

Поэтому я пытаюсь использовать Джексона для сериализации моего сеанса, и я использую jpa и gauva.

Я вижу такие ошибки, как:

Could not read JSON: The class with org.apache.openjpa.util.java$util$Date$proxy and name of org.apache.openjpa.util.java$util$Date$proxy is not whitelisted

Другими словамисериализуемый тип даты является подтипом.

Теперь я хотел бы сериализовать тип данных как тип даты, а не как конкретный тип, чтобы упростить сериализацию и особенно упроститьдесериализация.

Я надеюсь, что есть способ просто добавить сопоставления, т.е. если вы найдете тип X, то сериализуйте его как тип Y.

1 Ответ

0 голосов
/ 23 октября 2019

Спасибо за ваши комментарии.

Итак, что я не понял, так это то, что при настройке сериализации с помощью миксина вам нужно добавить миксины для объявленного типа, а не для фактического типа. Мне нужно было переопределить конфигурацию по умолчанию, так как конфигурация по умолчанию включала тип (org.apache.openjpa.util.java $ util $ Date $ proxy), и я добавил миксины для этого типа. Но на самом деле мне нужно добавить микширование для java.util.Date, потому что это объявленный тип.

Итак, теперь добавив mixin:

@JsonTypeInfo(use = Id.NONE)
public static class DateMixin {

}

Выполнив

context.setMixInAnnotations(Date.class, DateMixin.class);

, а не:

context.setMixInAnnotations(org.apache.openjpa.util.java$util$Date$proxy.class, DateMixin.class);

Я получаю ожидаемое поведение.

Он сериализировал мои даты как

«дата»:["org.apache.openjpa.util.java $ util $ Date $ proxy", 1571822501152]}

и теперь с добавленным миксином я получаю:

"дата ": 1571822501152

Что я и ищу.

...