我有一个Spring Boot restful API服务,它在响应中返回一个Java对象,并将其转换为json。
其中一个Java对象属性是' Java.time.Instant'。我应该如何为返回的json对象翻译它?
我尝试过使用@JsonFormat,但这不起作用......
返回的Java对象有一个' Instant'属性...
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ",timezone = "UTC")
public Instant getRequested() {
return Requested;
}
这将在json响应机构中回归......
"requested": {
"epochSecond": 1499342121,
"nano": 868000000
},
我使用的是Spring Boot 1.5.4
控制器方法是......
@RequestMapping(value="/", method= RequestMethod.POST)
public AcceptedAccountRequest newRequest(@RequestBody NewAccountRequest aRequest) {
AcceptedAccountRequest anAcceptedRequest = createAccepted(aRequest);
return anAcceptedRequest;
}
答案 0 :(得分:2)
解决了它......我正在攻击你的jsr310 maven依赖
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
澄清......如果我希望在json中返回所有Instant属性,因为UTC我应该使用以下格式指令,还是有另一种更好的方法来执行此操作...
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ",timezone = "UTC")
答案 1 :(得分:0)
您可以使用java.time.Instant
将.toString()
简单地用于其代表
如果您使用的是Spring,则可能需要将@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)添加到您的RestMethod中,以确保它被正确转换
答案 2 :(得分:0)
pom.xml添加
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
application.properties添加
spring.jackson.serialization.write-dates-as-timestamps=false