- 자바 직렬화 fasterxml.jackson 1.8
- 봄 부팅 1.5.8
- faster.xml.jackson (
jackson-module-parameter-names
,jackson-datatype-jdk8
,jackson-datatype-jsr310
) 2.9.2
나는 개체가 타임 스탬프.자바 LocalDateTime wrongTokenException
@JsonProperty("timestamp")
private LocalDateTime timestamp;
내가 역 직렬화해야 할 LocalDateTime
스탬프는 다음과 같습니다
{ "year":2017, "month":"OCTOBER", "dayOfMonth":27, "dayOfWeek":"FRIDAY", "dayOfYear":300, "monthValue":10, "nano":460000000, "hour":4, "minute":47, "second":29, "chronology":{
"calendarType":"iso8601", "id":"ISO" } }
내가 가진 개체를 역 직렬화 할 :
MyObject myObject=
new ObjectMapper()
.findAndRegisterModules()
.treeToValue(jsonPayload, MyObject.class);
응용 프로그램이 호출에서 얼어 내가 방해하는 경우 다음과 같은 오류 메시지가 나타납니다.
,210Error while stopping the container:
java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.DeserializationContext.wrongTokenException(Lcom/fasterxml/jackson/core/JsonParser;Ljava/lang/Class;Lcom/fasterxml/jackson/core/JsonToken;Ljava/lang/String;)Lcom/fasterxml/jackson/databind/JsonMappingException;
at com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer.deserialize(LocalDateTimeDeserializer.java:138) ~[jackson-datatype-jsr310-2.9.2.jar!/:2.9.2]
at com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer.deserialize(LocalDateTimeDeserializer.java:39) ~[jackson-datatype-jsr310-2.9.2.jar!/:2.9.2]
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:504) ~[jackson-databind-2.8.10.jar!/:2.8.10]
at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:111) ~[jackson-databind-2.8.10.jar!/:2.8.10]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:276) ~[jackson-databind-2.8.10.jar!/:2.8.10]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140) ~[jackson-databind-2.8.10.jar!/:2.8.10]
at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:3786) ~[jackson-databind-2.8.10.jar!/:2.8.10]
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2115) ~[jackson-databind-2.8.10.jar!/:2.8.10]
at com.fasterxml.jackson.databind.ObjectMapper.treeToValue(ObjectMapper.java:2612) ~[jackson-databind-2.8.10.jar!/:2.8.10]
UPDATE 'S :
전체 JSON은 다음과 같습니다
{"valid":true,"version":"0.0.1",
"timestamp":{"year":2017,"month":"OCTOBER","dayOfMonth":27,"dayOfWeek":"FRIDAY","dayOfYear":300,"monthValue":10,"nano":460000000,"hour":4,"minute":47,"second":29,"chronology":{"calendarType":"iso8601","id":"ISO"}},
"tenant":"stackoverflow","uid":"10fa132f-2c92-4fa5-bcc2-ee6023281503"})
직렬화로 :
이String jsonString = new ObjectMapper().writeValueAsString(messageIndex);
개체 속성 :
@JsonProperty("version")
private String version;
@JsonProperty("timestamp")
private LocalDateTime timestamp;
@JsonProperty("tenant")
private String tenant;
@JsonProperty("dataSampleUid")
private UUID uid;
private boolean isValid;
LocalDateTime.now()
treeToValue를 사용해야하는 이유는 무엇입니까? 왜 jsonMapper.readValue (객체, 클래스)를 사용하지 않습니까? – mrkernelpanic
JsonNode를 사용하면 스키마의 유효성을 검사 할 수 있습니다. readValue를 사용해 보았습니다. 변경하지 않았습니다. 문제는 디시리얼라이저가 LocalDateTime에 문제가 있다는 것인데, Error 스 니펫의 행 3과 4를 참조하십시오. –
그냥 궁금해서 잭슨 종속성, 특히 jackson-datatype-jsr310을 2.9.2 버전에서 이전 버전으로 되돌릴 수 있습니까? 2.8.10? – mrkernelpanic