当前位置: 首页 > 知识库问答 >
问题:

具有多种类型的json字符串映射[String, Object]

锺伟志
2023-03-14

我有这个json字符串:

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

当我用Jackson将其转换为映射[字符串,对象]时,开始日期的类型是字符串,我如何告诉Jackson将其转换为日期时间类型?

共有3个答案

况野
2023-03-14

我找到了一个方法。在反序列化方法中定义我自己的非类型化对象反序列化器,并扩展标准非类型化对象反序列化器:

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)
}
冯野
2023-03-14

您是否考虑过自定义映射反序列化器?您可以尝试解析其中的日期。如果事先不知道,您可能会在此处遇到性能问题。

牛兴安
2023-03-14

您需要在对象映射器中显式设置数据格式。您可以将日期格式映射参考JSON Jackson以获取更多详细信息。或者,您可以将其作为http://java.dzone.com/articles/how-serialize-javautildate

 类似资料:
  • 问题内容: 我想创建一个地图,可以将其转换为json对象,例如 但是golang指定使用类型声明地图,因此我可以使用map [string] string或map [string] int。我如何创建上述的json对象? 注意:直到运行时或需要创建json对象时,我才知道需要哪些数据和/或类型。因此,我不能只创建像 问题答案: 您可以随时使用存储任何类型。如包装袋中的文件所述: 若要将JSON解组

  • 问题内容: 我必须完成一个奇怪的特殊情况。其描述如下: 我必须设计一个地图,其中“ 键 ”始终为 字符串 类型。但是,其中一个键的“ 值 ”可以是 字符串或列表 (取决于特定键可以具有的值数。如果该特定键只有一个值,并且必须如果键包含许多值,则为列表)。如何完成这种情况? 例如:在映射中有2个键,分别是“名称”和“电话号码”。一个人只能有一个名字和多个电话号码。因此,此处的第一个键(即“名称”)的

  • redis 字符串类型

  • 问题内容: 我正在使用AttributeConverter将MySQL JSON列转换为Object,如https://stackoverflow.com/a/31547965/1633272所述 将数据存储到MySQL中时,它工作正常,我可以在WorkBench中看到正确的值。 但是,当将该列返回给Java应用程序时,一个Unicode字符映射为3个字符。 这是一个示例,JSON字符串 “中”

  • 在java 8中创建新代码后,我想清除声纳问题。 我的代码: 声纳说: Lambda应该替换为方法引用。方法/构造函数引用比使用lambda更紧凑和可读性,因此是首选。同样,空检查可以替换为对Object::isNull和Object::nonNull方法的引用。 我想要更改映射(arg-

  • 问题内容: 我有一个JSON响应,我需要将对应的JSON字符串映射到特定的Response类,是否有任何工具或框架可以做到这一点。 响应类为: Json响应字符串为{“ 0”:{“ 0”:“ Rockey”,“ 1”:“ John”}} 我将Apache CXF Framework与Jettison一起使用,因为JSON Provider还使用JAXB将数据连接到低带宽客户端。 请注意,我要将数字