我有这个json字符串:
{
"startDate" : "2014-12-17T14:31:40Z",
"name" : "Izek",
"age" : 12
}
当我将其与杰克逊转换为Map[String, Object]
时,startDate
的类型为String
我如何告诉杰克逊将其转换为DateTime
类型?
答案 0 :(得分:4)
您需要在objectMapper中显式设置数据格式。您可以参考Date format Mapping to JSON Jackson了解更多详情。或者,您可以将其作为http://java.dzone.com/articles/how-serialize-javautildate
执行答案 1 :(得分:1)
您是否考虑过自定义地图反序列化程序?您可以尝试在那里解析日期。如果事先不知道,你可能会在这里遇到性能打击。
答案 2 :(得分:1)
我找到了办法。
定义我自己的UntypedObjectDeserializer
并在std.UntypedObjectDeserializer
方法中扩展deserialize
:
if (currentToken == JsonToken.VALUE_STRING) {
if (_stringDeserializer != null) {
return _stringDeserializer.deserialize(jp, ctxt)
}
String text = jp.getText();
if (dateTimeFormatRegex.match(text) {
return toDateTimeObject(text);
} else {
return text;
}
}
return super.deserialize(jp, ctxt)
public DateTime toDateTimeObject(String text) {
dateTimeFormatter.parseDateTime(text)
}