3

Jackson コンバーターと Joda DateTime で Retrofit2 を使用しようとしています。私が持っているコードは次のとおりです。

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());
retrofit = new Retrofit.Builder()
        .baseUrl(RestServiceApi.BASE_URL)
        .addConverterFactory(JacksonConverterFactory.create(mapper))
        .client(okHttpClient)
        .build();

ただし、Joda シリアライザー/デシリアライザーは使用されないため、

{
    ...........
    "DateTime": {
         "centuryOfEra": 20,
         "dayOfMonth": 29,
         "dayOfWeek": 2,
         "dayOfYear": 363,
         "era": 1,
         "hourOfDay": 8,
         .....
    }
 }

ObjectMapper なしで JacksonConverterFactory.create() を使用すると、同じ結果が得られます。

   .addConverterFactory(JacksonConverterFactory.create())

同じ ObjectMapper を直接使用して値を String に書き込む場合、すべてが期待どおりに機能します。

    ObjectMapper mapper = new ObjectMapper();
    mapper.registerModule(new JodaModule());
    String payload = mapper.writeValueAsString(message);

どんな助けでも大歓迎です。

編集: 依存関係:

+--- com.squareup.okhttp:okhttp:2.7.0
|    \--- com.squareup.okio:okio:1.6.0
+--- com.squareup.okhttp:logging-interceptor:2.7.0
|    \--- com.squareup.okhttp:okhttp:2.7.0 (*)
+--- com.squareup.retrofit:retrofit:2.0.0-beta2
|    \--- com.squareup.okhttp:okhttp:2.5.0 -> 2.7.0 (*)
+--- com.squareup.retrofit:converter-jackson:2.0.0-beta2
|    +--- com.squareup.retrofit:retrofit:2.0.0-beta2 (*)
|    \--- com.fasterxml.jackson.core:jackson-databind:2.4.3
|         +--- com.fasterxml.jackson.core:jackson-annotations:2.4.0
|         \--- com.fasterxml.jackson.core:jackson-core:2.4.3
+--- com.fasterxml.jackson.datatype:jackson-datatype-joda:2.4.3
|    +--- com.fasterxml.jackson.core:jackson-annotations:2.4.0
|    +--- com.fasterxml.jackson.core:jackson-core:2.4.3
|    +--- com.fasterxml.jackson.core:jackson-databind:2.4.3 (*)
|    \--- joda-time:joda-time:2.2 -> 2.3
+--- com.box:json-schema-validator:2.2.10
|    +--- joda-time:joda-time:2.3

Edit2: joda-time:2.3 依存関係を削除して結果を出さなかった。

4

1 に答える 1