Данные Джексона Теряют информацию о длинном типе после обновления с 2.10.0 до 2.11.0 с помощью Spring Boot

#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.