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

Jackson转换LocalDatetime

卜瀚漠
2023-03-14
@JsonFormat(pattern = "yyyy-MM-dd'T'hh:mm:ss.SSS'Z'")
private LocalDateTime dateTime;

当Jackson试图解析像2018-11-28T15:24:00.000Z这样的日期时,会抛出一个异常

JSONMappingException:无法构造java.time.LocalDateTime的实例:没有字符串参数构造函数/工厂方法可从字符串值反序列化('2018-11-28T15:24:00.000Z')

在我的pom.xml中,我有:

    null
@Bean
public ObjectMapper postConstruct() {
    return this.builder
           .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
            .defaultUseWrapper(false)
            .build();
}

我也试过:

@JsonFormat(pattern = "yyyy-MM-dd'T'hh:mm:ss.SSS'Z'", timezone ="UTC")
private LocalDateTime dateTime;

共有1个答案

管梓
2023-03-14

我也遇到过类似的问题。出现此问题的原因是mapper无法从String对象创建LocalDateTime实例。下面会解决你的问题。

@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonFormat(pattern = "yyyy-MM-dd'T'hh:mm:ss.SSS'Z'")
private LocalDateTime dateTime;

如果您不想显式地提到序列化器/反序列化器,那么您必须按照JackSon guide for release of DateTime Java8 Enhancements执行以下任一项操作。

ObjectMapper mapper = new ObjectMapper()
   .registerModule(new ParameterNamesModule())
   .registerModule(new Jdk8Module())
   .registerModule(new JavaTimeModule());

ObjectMapper mapper = new ObjectMapper();
mapper.findAndRegisterModules();
 类似资料:
  • 请帮助更改日期格式。 **源**json文件 **目标**员工对象 我需要支持将文件json日期转换为对象。来自文件 对象 对象 库“com.fasterxml.jackson.datatype:jackson-datatype-jsr310” 日期:<代码>java。时间本地日期 我的目标是从文件中读取json数据并将其映射到对象。

  • 不推荐使用,是否有其他解决此问题的方法?

  • 我正在使用杰克逊对象映射器将JSON转换为对象并进行一些转换并将其转换回JSON。 JSON类似于{“id”:“abc1243”,“val”:1,“isDel”:true} 在上面的例子中,val是int,isDel是布尔值。 我的对象定义如下 当我将JSON转换为MyObj时,字符串id和Int val被绑定到字符串中,但布尔值没有绑定,因此我得到null。 Im使用以下方法

  • 问题内容: 我希望我的JSON看起来像这样: 到目前为止的代码: 和 我只是缺少如何使用Jackson将Java对象转换为JSON的部分: 我的问题是:我的课程正确吗?我必须调用哪个实例,以及如何实现此JSON输出? 问题答案: 要使用Jackson 转换JSON:

  • 问题内容: 是否可以将Java对象直接转换为JsonNode-Object? 我发现解决此问题的唯一方法是将Java对象转换为String,然后转换为JsonNode: 问题答案: 从Jackson 1.6开始,您可以使用: 要么