有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

要映射多种类型的java json字符串[字符串,对象]

我有一个json字符串:

{
  "startDate" : "2014-12-17T14:31:40Z",
  "name" : "Izek",
  "age" : 12
}

当我用Jackson将其转换为Map[String, Object]startDate的类型是String我如何告诉Jackson将其转换为DateTime类型


共 (3) 个答案

  1. # 2 楼答案

    你考虑过自定义地图反序列化程序吗?你可以试着解析其中的日期。如果事先不知道的话,你可能会在这里表现出色

  2. # 3 楼答案

    我找到了一个方法。 定义我自己的UntypedObjectDeserializer并在deserialize方法中扩展std.UntypedObjectDeserializer

    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)
    }