我面临以下问题:在使用Spring Boot,spring-data-jpa和spring-data-rest的项目中,发布HATEOAS休息服务,我想将LocalDateTime变量转换为& #34; 2014-12-20T02:30:00.472"为了序列化的目的,我希望发送给我的客户端的响应始终包含该格式。
public class Order {
...
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss.SSS")
private LocalDateTime createdAt;
...
getter and setter
}
这是我的Repository界面:
@RepositoryRestResource(path = "orders", collectionResourceRel = "orders")
public interface IOrderRepository extends JpaRepository<Order, Long> {
}
我还有一个控制器来测试这些东西:
@RestController
public class JavaTimeController {
IOrderRepository repo;
public JavaTimeController(IOrderRepository repo) {
super();
this.repo = repo;
}
@RequestMapping("/dblocaldatetime")
public Order dbLocalDateTime() {
Order order = repo.findOne(1L);
return order;
}
}
现在很奇怪:
"createdAt" : {
"year" : 2010,
"month" : "JANUARY",
"dayOfMonth" : 1,
"dayOfWeek" : "FRIDAY",
"dayOfYear" : 1,
"monthValue" : 1,
"hour" : 2,
"minute" : 2,
"second" : 0,
"nano" : 0,
"chronology" : {
"id" : "ISO",
"calendarType" : "iso8601"
}
}
为什么会这样?我认为在构建HATEOAS响应的过程中会发生一些事情,但我无法进一步调查:我怎么做? 任何帮助将不胜感激。
答案 0 :(得分:1)
最后,我发现了问题所在:它只是一个脏的浏览器缓存问题;出于某种原因,在改变不同的设置时,我总是得到相同的结果,似乎HATEOAS存在问题;清理浏览器缓存解决了问题。
按照@ Cepr0的建议,还发现仅使用@JsonFormat注释就足够了;因此不需要@JsonSerialize(using = LocalDateTimeSerializer.class)和@JsonDeserialize(using = LocalDateTimeDeserializer.class)注释。