如何返回Java' java.time.Instant'在Restful API正文响应中作为json值的属性?

时间:2017-07-06 10:01:26

标签: java spring rest java.time.instant

我有一个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;
}

3 个答案:

答案 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)

  1. pom.xml添加

    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
    </dependency>
    
  2. application.properties添加

    spring.jackson.serialization.write-dates-as-timestamps=false
    

链接https://codeboje.de/jackson-java-8-datetime-handling/