在一个非常简单的Spring boot反应式项目中,没有特定的配置(但下面尝试的配置),我需要以ISO形式序列化LocalTime
(以及相关的类,比如LocalDate
)。默认情况下,每个属性都是单独序列化的,这从对象的角度来看是有意义的。但我需要ISO格式的单字符串属性。
有人多次提到这个问题,比如这里、这里或这里较小的程度。
没用。我想知道我做错了什么,或者这些链接是否只是过时了,以及自那以后spring中的机制是否更新/更改了。
我所做的中心测试是通过让一个bean
注册相应的模块:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
@Configuration
public class MyConfiguration {
@Bean
@Primary
public ObjectMapper customJson() {
ObjectMapper mapper = new Jackson2ObjectMapperBuilder()
.build();
mapper.registerModule(new JavaTimeModule());
return mapper;
}
}
我识别序列化不是ISO格式的方法是查看我对象的大摇大摆的ui描述,显示我的endTime
属性,如下所示(当我试图实现的实际结果是“endTime”:“某个ISO字符串”
):
"endTime": {
"hour": 0,
"minute": 0,
"nano": 0,
"second": 0
},
所以问题是:如何在Spring Boot(被动)中为LocalDate
配置单字符串格式?
您可以通过禁用jackson中的WRITE_DATES_AS_TIMESTAMPS功能来实现您的目标
ObjectMapper mapper = Jackson2ObjectMapperBuilder.json()
.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.modules(new JavaTimeModule())
.build();
这将使它以ISO格式序列化
你需要做这样的事情:
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
System.out.println(objectMapper.writeValueAsString(new Entity()));
}
static class Entity {
LocalTime time = LocalTime.now();
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm:ss.SSS")
public ZonedDateTime getTime() {
return time;
}
}
这是这个问题的修改引文
我试图理解UTC和ISO格式之间的区别,以及在服务器之间传输消息时使用什么。所以当我尝试以下方法时,我得到的是
问题内容: 我正在创建我的JavaFX应用程序,每次创建新的列表单元格时都需要使用时间标签。我需要将当前时间的字符串格式直接放入作为参数的Label构造函数中。 我发现并使用了: 但是它显示了错误的时区,所以我将使用和分类。 有没有办法在一行中实现相同的字符串结果?谢谢您的帮助 :) 问题答案: 在新的应用程序中使用Java 8类型(java.time)可能更好。您可以先创建一个: 然后获取当前时
我有一个关于格式化程序的问题。 在SWAPI(https://SWAPI.co/documentation#people)中,您可以读取和日期,其格式如下: 但是在预定义格式化程序中的类DateTimeFormatter的文档一节中,我看不到任何与SWAPI日期示例匹配的格式化程序。
我知道有人问过这个问题,但没有提供解决方案。Python UTC日期时间对象的ISO格式不包括Z(Zulu或零偏移) 我正在寻找一种在Python中用这种格式生成UTC时间戳的干净方法。我需要的格式是。 具体来说,我需要在最后加上“Z”。Python的不会在末尾附加Z。 请注意,手动添加“Z”不是我可以接受的解决方案。我正在寻找一个干净的方法来做到这一点。 以ISO格式生成带后缀的UTC时间戳的干
我正在寻找javascript/jquery库,它可以为我提供UI和功能来选择ISO 8601格式的持续时间。 用户界面应包含多个级联选择框,用户可以选择月,小时,天,周...在ISO_8601中定义。 选择后,库应将其转换为标准ISO_8601持续时间格式的代码,反之亦然。 例如,“P3Y6M4DT12H30M5S”表示持续时间为“三年六个月四天十二小时三十分五秒”。
我有一个ISO 8601格式的持续时间,例如:PT5M或PT120S。 有没有什么方法可以使用moment.js解析这些并获取持续时间中指定的分钟数? 谢谢大家! PS:我研究了解析ISO 8601持续时间,并将ISO 8601时间格式转换为正常持续时间 但很想知道这是否可行。