2017-04-27 2 views
2

jackson을 사용하여 날짜가 포함 된 json 문자열을 jodaTime의 DateTime으로 변환하고 싶습니다.NoSuchFieldError "ADJUST_DATES_TO_CONTEXT_TIME_ZONE"json을 구문 분석 할 때

 <dependency> 
      <groupId>joda-time</groupId> 
      <artifactId>joda-time</artifactId> 
      <version>2.9.9</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-annotations</artifactId> 
      <version>${jackson.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-core</artifactId> 
      <version>${jackson.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
      <version>${jackson.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.datatype</groupId> 
      <artifactId>jackson-datatype-joda</artifactId> 
      <version>${jackson.version}</version> 
     </dependency> 

잭슨 버전 : 내 pom.xml 파일에 다음과 같이 내가 joda 시간과 잭슨을 포함했다

{ 
"add_time": "2017-04-26 14:26:58", 
} 

: 불행하게도이 오류

java.lang.NoSuchFieldError: ADJUST_DATES_TO_CONTEXT_TIME_ZONE 

json으로 객체가이 모양을 얻을 2.8.8입니다.

ObjectMapper mapper = new ObjectMapper(); 
    mapper.registerModule(new JodaModule()); 

이 사람이 문제가 무엇인지 알고 있나요 : 내 객체 매퍼 이런 식으로 만들었습니다? 나는 2 시간 동안 이것에 지금 당장 머물러있다. 또한 DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE을 사용하지 않도록 설정하려고했지만 도움이되지 않습니다.

답변

0

JSON에있는 날짜 형식이 Jackson이 기대하는 바가 아니기 때문에 사용자 지정 날짜 시간 형식을 지정해야합니다. 필드 또는 설정 메소드에 대한 @JsonFormat 주석으로 쉽게 수행 할 수 있습니다 (ADJUST_DATES_TO_CONTEXT_TIME_ZONE을 비활성화 할 필요 없음). 예 :

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 
DateTime addTime; 

예제의 날짜는 2017-04-26T14:26:58.000Z으로 구문 분석됩니다. 그런데 잭슨이 기대하는 기본 포맷이 어느 것입니까?

주석을 추가하고 싶지 않지만 좀 더 복잡하면 맞춤형 디시리얼라이저를 살펴볼 수 있습니다.

+0

귀하의 접근 방식이 도움이되지 않았습니다. 나는 아직도 예외를 얻는다. – Martin

+0

Jackson이이 날짜를 구문 분석하려면 날짜 시간 형식이 필요합니다. 보고하는 예외 상황에서 사용중인 Jackson 버전에서 'ADJUST_DATES_TO_CONTEXT_TIME_ZONE'을 (를) 사용할 수 없다고 말합니다. 하지만 당신은 내 대답에 접근 방식을 사용하거나 해제 할 필요가 없습니다. 따라서이 구성을 제거하면이 특별한 예외가 발생하지 않습니다. 다른 이유로 이것을 구성해야하는 경우 Jackson 버전> = 2.2를 사용하고 있는지 확인해야합니다. –

+0

나는 당신이 말하는 것을 의심하지 않습니다. 그리고 나는 그것을 시도했다. @JsonFormat을 추가하고 ADJUST_DATES_TO_CONTEXT_TIME_ZONE을 비활성화 한 코드를 제거했습니다. 귀하의 제안은 아마도 예외가 해결되었을 때 내가 얻었을 것이라는 오류를 막았을 것이지만 지금은 여전히이 예외가 있습니다. – Martin