【发布时间】:2017-07-06 10:01:26
【问题描述】:
我有一个 Spring Boot RESTful API 服务,它在其响应中返回一个 Java 对象,该对象被翻译成 json。
Java 对象属性之一是“Java.time.Instant”。我应该如何为返回的 json 对象翻译这个?
更新
我尝试过使用@JsonFormat 但这不起作用...
返回的 Java 对象具有“即时”属性...
@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;
}
【问题讨论】:
-
你可以使用
.toEpochMilli,它得到一个长值。然后使用.ofEpochMilli将其返回到 Instant 会更容易 -
进一步了解这一点,普遍的看法似乎是使用 8601 格式返回所有 json 时间戳属性。使用“@jsonformat”注释是否是提供此服务的正确方式?
-
java.time.Instant具有 ISO-8601 作为字符串表示,快速查看 API doc 也会发现这一点 - 只要您不使用一些奇怪的,基于反射的序列化你很高兴。请使用谷歌。 -
我尝试添加@JsonFormat,但生成的json无法识别...
标签: java spring rest java.time.instant