我试图输出一个OffsetDateTime从我的Spring应用程序,并在我的application.properties这些属性:
spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false
spring.jackson.date-format=yyyy-MM-dd'T'HH:mm
但是,当返回日期时,其格式为
"2017-01-30T16:55:00Z"
如何在Spring应用程序中正确配置日期格式?
添加对jackson-modules-java8的依赖对我来说很有用(不推荐使用jackson-datatype-jsr310)
<!-- deserialize Java 8 date time types e.g OffsetDateTime -->
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-modules-java8</artifactId>
</dependency>
我还需要添加以下内容以使其发挥作用:
om.registerModule(new JavaTimeModule());
不需要写入日期,因为时间戳=false或om。禁用(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)——这适用于Java“Date”对象。
我用了这个注释:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX")
然后得到如下输出:
"时间戳":"2020-04-23T08:00:00.000-06:00"
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
通过这样做,您可以获得ISO 8601中的OffsetDateTime属性,包括目标中的偏移量。
所以我设法想出了一个解决方案,但如果你有其他选择,请发布它。
我最终创建了一个新的主ObjectMapper
bean,并为OffsetDateTime
注册了一个新模块。我可以在这里使用java设置自己的日期格式。时间总体安排DateTimeFormatter
。我还必须用我的映射器注册JavaTimeModule
。
@Configuration
public class JacksonOffsetDateTimeMapper{
@Primary
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(OffsetDateTime.class, new JsonSerializer<OffsetDateTime>() {
@Override
public void serialize(OffsetDateTime offsetDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
jsonGenerator.writeString(DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(offsetDateTime));
}
});
objectMapper.registerModule(simpleModule);
return objectMapper;
}
}
请帮助更改日期格式。 **源**json文件 **目标**员工对象 我需要支持将文件json日期转换为对象。来自文件 对象 对象 库“com.fasterxml.jackson.datatype:jackson-datatype-jsr310” 日期:<代码>java。时间本地日期 我的目标是从文件中读取json数据并将其映射到对象。
我想用特定的格式序列化POJO的某些日历字段。 我将添加一个格式为字符串的字段,因为它实际上是以24小时为单位表示一天,而不是一个特定的时间瞬间。但当我添加带有注释的新字段时: 我希望得到这样的JSON: 相反,我遇到了以下例外情况:
我正在将日期/日期时间字符串转换为,我有一种日期时间格式,它可能有以下值之一: 有时有时间和没有时间,我需要将其转换为。 我已经尝试了下面的代码 因为没有时间,我将它设置为默认值,但是当我试图解析时 它抛出的错误类似于 线程"main"java.time.format.DateTimeParseException中的异常:无法解析文本'2016-06-06':无法从TemporalAccess:{
我有一个来自API的日期格式,如下所示: 即YYYY-DD-MM HH:MM AM/PM GMT时间戳。我正在将这个值映射到POJO中的日期变量。显然,它显示转换错误。 我想知道两件事: 我需要使用什么格式来与Jackson进行转换?日期是一个很好的字段类型吗? 一般来说,在Jackson将变量映射到对象成员之前,有没有一种方法可以处理这些变量?例如,更改格式、计算等
问题内容: 我有一个来自API的Date格式,如下所示: 这是YYYY-DD-MM HH:MM am / pm GMT时间戳。我将此值映射到POJO中的Date变量。显然,其显示转换错误。 我想知道两件事: 与Jackson进行转换时,我需要使用哪种格式?Date是否适合此字段类型? 通常,是否有一种方法可以在Jackson将变量映射到Object成员之前处理这些变量?诸如更改格式,计算等。 问题
问题内容: 我有来自API的Date格式,如下所示: 这是YYYY-DD-MM HH:MM am / pm GMT时间戳。我将此值映射到POJO中的Date变量。显然,其显示转换错误。 我想知道两件事: 与Jackson进行转换时,我需要使用哪种格式?Date是否适合此字段类型? 通常,是否有一种方法可以在Jackson将变量映射到Object成员之前对其进行处理?诸如更改格式,计算等。 问题答案