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 依存関係を削除して結果を出さなかった。