gpt4 book ai didi

java - Spring Boot HATEOAS 休息服务中的 LocalDateTime 序列化

转载 作者:行者123 更新时间:2023-11-30 10:29:10 24 4
gpt4 key购买 nike

我面临以下问题:在使用 Spring Boot、spring-data-jpa 和 spring-data-rest 发布 HATEOAS 休息服务的项目中,我想将 LocalDateTime 变量转换为类似“2014- 12-20T02:30:00.472"用于序列化目的,也就是说,我希望发送给我的客户端的响应始终包含该格式。

正在关注 thisthat建议,我在我的模型类中使用了这些注释:

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
}

这是我的存储库界面:

@RepositoryRestResource(path = "orders", collectionResourceRel = "orders")
public interface IOrderRepository extends JpaRepository<Order, Long> {

}

我还有一个 Controller 来测试这些东西:

@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;
}
}

现在奇怪的是:

  • 如果我向 URL“http://localhost:8080/dblocaldatetime”发送请求,那么我的测试 Controller 会检索 id=1 的订单,并且会显示正确的日期时间格式(即“2014-12-20T02:30:00.472”) ;值得注意的是,在这种情况下,资源以“非 HATEOAS”形式返回,即它没有任何“_link”或“_embedded”修饰
  • 查询其余 URI“http://localhost:8080/orders/1”我收到 HATEOAS 响应,但这次日期时间格式如下所示:“创建于”:{
    “年”:2010年,
    “月”:“一月”,
    “月日”:1,
    "dayOfWeek": "星期五",
    “一年中的一天”:1,
    “月值”:1,
    “小时”:2,
    “分钟”:2,
    “第二个”:0,
    “纳米”:0,
    “年表”:{
    “编号”:“国际标准化组织”,
    “日历类型”:“iso8601”
    }
    }

为什么会这样?我认为在构建 HATEOAS 响应的过程中发生了一些事情,但我无法进一步调查:我怎么能?任何帮助将不胜感激。

最佳答案

最后,我找到了问题所在:很简单,一个脏浏览器缓存问题;出于某种原因,在更改不同的设置时,我总是得到相同的结果,而且 HATEOAS 似乎有问题;清理浏览器缓存解决了这个问题。

按照@Cepr0的建议,也发现只使用@JsonFormat注解就够了;所以不需要 @JsonSerialize(using = LocalDateTimeSerializer.class) 和 @JsonDeserialize(using = LocalDateTimeDeserializer.class) 注释。

关于java - Spring Boot HATEOAS 休息服务中的 LocalDateTime 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44195799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com