2017-04-27 13 views
2

jsonを使用して日付を含むjson文字列をjodaTimeの日付時刻に変換したいとします。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に以下のように私はジョダ時間とジャクソンが含まれている

{ 
"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,3時間今こだわっています。私もDeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONEを無効にしようとしましたが、それは役に立ちません。

答えて

0

あなたのJSONのものがジャクソンが期待するものではないので、カスタム日付の時刻形式を指定する必要があります。フィールドまたはセッターメソッドの@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

ジャクソンがこの日付を解析するには、日付の時刻形式が必要です。報告している例外では、使用しているジャクソンのバージョンでは 'ADJUST_DATES_TO_CONTEXT_TIME_ZONE'は利用できません。しかし、あなたは私の答えのアプローチでこれを無効にするか有効にする必要はありません。したがって、この設定を削除するだけで、この特別な例外は発生しません。それ以外の理由でこれを設定する必要がある場合は、Jacksonバージョン> = 2.2を使用していることを確認する必要があります。 –

+0

あなたの言っていることを疑うことはありません。そして私はそれを試しました。 @JsonFormatを追加し、ADJUST_DATES_TO_CONTEXT_TIME_ZONEを無効にしたコードを削除しました。あなたの提案はおそらく、例外が解決されたときに私が得たであろうエラーを防ぎましたが、今はまだこの例外があります。 – Martin

関連する問題