带有多种类型的json字符串Map [String,Object]

igr*_*eld 8 java json jackson

我有这个json字符串:

{
  "startDate" : "2014-12-17T14:31:40Z",
  "name" : "Izek",
  "age" : 12
}
Run Code Online (Sandbox Code Playgroud)

当我用杰克逊转换它Map[String, Object]的类型startDateString我怎么能告诉杰克逊把它转换成DateTime类型?

igr*_*eld 1

我找到了一种方法来做到这一点。定义我自己的UntypedObjectDeserializerstd.UntypedObjectDeserializerdeserialize方法中扩展:

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)
}
Run Code Online (Sandbox Code Playgroud)