Что такое Class<?> Vc или JavaType valueType, используемый в конструкторе Джексона StdDeserializer

Я делаю кастомный десериализатор (расширяю StdDeserializer) с использованием библиотеки JSON Джексона, и я не могу понять, какова цель параметров конструктора. Что такое Class<?> или же JavaType valueType используется для Джексона? Это просто потому, что у Java нет усовершенствованных обобщений, и Джексону нужно больше информации о обобщенном типе, к которому вы относитесь?

1 ответ

Решение

Джексон сопоставляет структуры JSON с классами Java. Так же, как JAXB отображает классы Java в XSD-ы.

Итак, это Class<?> (или JavaType) определяет, какой класс Java принадлежит этому десериализатору. Эти классы Java могут быть чем угодно, имеющими правильные аннотации, например @JsonProperty,

Другой вопрос: почему этот класс является общим? Это так потому что [java.lang.Class][1] является общим. Если вы хотите сделать это правильно, то вы указываете это так:

StdDeserializer serializer = new StdDeserializer(YourClass.class);

Дело в том, что StdSerializer не ограничивает классы, которые вы можете указать.

Другие вопросы по тегам