如何让ObjectMapper支持处理Duration
时间: 2023-07-05 20:33:36 浏览: 48
要让ObjectMapper支持处理Duration,需要添加Java Time模块的依赖。在Maven项目中,可以添加以下依赖:
```xml
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.9.8</version>
</dependency>
```
然后在创建ObjectMapper对象时,需要注册Java Time模块:
```java
ObjectMapper mapper = new ObjectMapper()
.registerModule(new JavaTimeModule());
```
现在,ObjectMapper就可以处理Duration类型的数据了。例如,如果有一个包含Duration类型字段的类:
```java
public class MyClass {
private Duration duration;
public Duration getDuration() {
return duration;
}
public void setDuration(Duration duration) {
this.duration = duration;
}
}
```
可以使用ObjectMapper将这个类转换为JSON:
```java
MyClass obj = new MyClass();
obj.setDuration(Duration.ofSeconds(30));
String json = mapper.writeValueAsString(obj);
System.out.println(json); // {"duration":"PT30S"}
```
注意,在JSON中,Duration类型被表示为ISO 8601格式的字符串。