I used joda 2.10.14 time and jackson2 2.18.3,
jackson-core-2.18.3.jar
jackson-databind-2.18.3.jar
jackson-datatype-joda-2.18.3.jar
joda-time-2.10.14.jar
I have register JodaModule, but it also throw Exception, my code is
public static void main(String[] args) throws JsonProcessingException {
DateTime dateTime = new DateTime();
Days days = Days.days(1);
Map<String, Object> map = new HashMap<>();
map.put("dateTime", dateTime);
map.put("days", days);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JodaModule());
String json = objectMapper.writeValueAsString(map);
System.out.println(json);
}
the exception
Exception in thread "main" com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Joda date/time type `org.joda.time.Days` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-joda" to enable handling (through reference chain: java.util.HashMap["days"])
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77)
at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1340)
at com.fasterxml.jackson.databind.ser.impl.UnsupportedTypeSerializer.serialize(UnsupportedTypeSerializer.java:35)
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:808)
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:764)
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:502)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:341)
at com.fasterxml.jackson.databind.ObjectMapper._writeValueAndClose(ObjectMapper.java:4819)
at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:4060)
at azkaban.utils.JSONUtils.main(JSONUtils.java:96)
I checked JodaModule code, found that it is not add Days deserializer. So, how should I resolve this issue?
The code maintainers have helped fix this problem.
https://github.com/FasterXML/jackson-datatype-joda/issues/162
https://github.com/FasterXML/jackson-datatype-joda/issues/160