#java #spring-boot #jackson #jackson-databind
Вопрос:
Данные сериализуются без информации о типах для полей Pojo длинного типа, то же самое относится и к сериализации. Это нарушает плавные обновления.
Код для отображения объектов:
final Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
final ObjectMapper objectMapper = builder.build();
objectMapper.enableDefaultTypingAsProperty(ObjectMapper.DefaultTyping.JAVA_LANG_OBJECT, ObjectInfoMixIn.PROPERTY_NAME);
objectMapper.addMixIn(Object.class, ObjectInfoMixIn.class);
ObjectInfoMixIn.class :
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = ObjectInfoMixIn.PROPERTY_NAME)
public class ObjectInfoMixIn {
public static final String PROPERTY_NAME = "@type";
}
Джексон 2.10.0 данные:
{
"order": {
"id": [
"java.lang.Long",
6288938
],
"@type": "com.pojo.Order",
"createdOn": [
"java.time.ZonedDateTime",
1630599735.829000000
],
}
}
Джексон 2.11.0 данные:
{
"order": {
"id": 6288939,
"@type": "com.pojo.Order",
"createdOn": [
"java.time.ZonedDateTime",
1630599735.829000000
],
}
}
Порядок занятий:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Order {
private Long id;
private ZonedDateTime createdOn;
}
Error Stack Trace:
Вызвано: ком.fasterxml.Джексон.метод databind.предоставление услуг по монтажу.MismatchedInputException: невозможно десериализовать экземпляр
java.lang.Long
из токена START_ARRAY в ком.fasterxml.Джексон.метод databind.предоставление услуг по монтажу.MismatchedInputException.из(MismatchedInputException.в Java:59) ~[Джексон-метод databind-2.11.1.баночка:2.11.1] на ком.fasterxml.Джексон.метод databind.ДесериализациякОнтекст.reportInputMismatch(ДесериализациякОнтекст.java:1468) ~[jackson-databind-2.11.1.jar:2.11.1] в com.fasterxml.jackson.databind.Десериализацияcontext.handleUnexpectedToken(десериализацияcontext.java:1242) ~[jackson-databind-2.11.1.jar:2.11.1] в com.fasterxml.Джексон.метод databind.дезертирства СТД.StdDeserializer._deserializeFromArray(StdDeserializer.в Java:720) ~[Джексон-метод databind-2.11.1.баночка:2.11.1] в com.fasterxml.jackson.databind.deser.std.NumberDeserializers$LongDeserializer._parseLong(NumberDeserializers.java:595) ~[Джексон-метод databind-2.11.1.баночка:2.11.1] в com.fasterxml.jackson.databind.deser.std.NumberDeserializers$LongDeserializer.deserialize(NumberDeserializers.java:562) ~[Джексон-метод databind-2.11.1.баночка:2.11.1] на ком.fasterxml.jackson.databind.deser.std.NumberDeserializers$LongDeserializer.deserialize(NumberDeserializers.java:540) ~[jackson-databind-2.11.1.jar:2.11.1] в com.fasterxml.jackson.databind.deser.SettableBeanProperty.десериализация(SettableBeanProperty.java:542) ~[jackson-databind-2.11.1.jar:2.11.1] в com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:535) ~[jackson-databind-2.11.1.jar:2.11.1] в com.быстрее. джексон.привязка к базе данных.дезер.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:419) ~[jackson-databind-2.11.1.jar:2.11.1] в com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1322) ~[jackson-databind-2.11.1.jar:2.11.1] в com.fasterxml.jackson.databind.deser.BeanDeserializer.десериализует объект(BeanDeserializer.java:331) ~[jackson-databind-2.11.1.jar:2.11.1] в com.быстрее. джексон.привязка к базе данных.дезер.BeanDeserializer._deserializeOther(BeanDeserializer.java:199) ~[jackson-databind-2.11.1.jar:2.11.1] в com.fasterxml.jackson.databind.deser.BeanDeserializer.десериализуйте(BeanDeserializer.java:166) ~[jackson-databind-2.11.1.jar:2.11.1] в com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:132) ~[jackson-databind-2.11.1.jar:2.11.1] в com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.Десериализует типизированный объект(AsPropertyTypeDeserializer.java:99) ~[jackson-databind-2.11.1.jar:2.11.1] в com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromAny(AsPropertyTypeDeserializer.java:195) ~[jackson-databind-2.11.1.jar:2.11.1] в com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserializeWithType(UntypedObjectDeserializer.java:710) ~[jackson-databind-2.11.1.jar:2.11.1]
Комментарии:
1. Необходимы дополнительные сведения и код. Нет никакого способа, чтобы кто-то мог ответить на ваш вопрос с помощью пары JSON.