gpt4 book ai didi

java - 有条件地将元素渲染为链接以在 Java 中实现 HAL

转载 作者:搜寻专家 更新时间:2023-11-01 02:51:07 24 4
gpt4 key购买 nike

我正在尝试实现 HAL standard for JSON在 JAX-RS 服务中。我的项目由用户组成,用户包含许多项目,项目包含许多节点,节点包含各种数据和指向其他节点的指针。

所以当一个端点被击中时,我想将对象嵌入一层深,然后链接:

  • /user 有用户数据和“_embedded”项目,但这些项目只有包含节点(和自身)的“_链接”
  • /project/1234 有“_embedded”节点,但这些节点“_links”到更多数据。

等等。

Jackson JSONFilters 看起来很接近,但我不太了解它。尤其相关的是,有时属性会映射到“_embedded”集合中,有时会使用不同的技术映射到“​​_links”中。

有没有人尝试过这样的事情?

有 HalBuilder,但它似乎需要手动序列化,我想避免这种情况。话又说回来,Jackson 的代码似乎几乎和手工序列化一样多。

最佳答案

您需要实现自定义 Jackson Serializer (http://jackson.codehaus.org/1.7.9/javadoc/org/codehaus/jackson/map/JsonSerializer.html)

看看 Spring Hateoas 项目。他们已经实现了一个 jackson 扩展HalJacksonModule(https://github.com/SpringSource/spring-hateoas/commit/61e73107c1213556c025dc8f68a8784daf089796 ) 以启用 Jackson 的 HAL 序列化。我认为您可以使用它或根据您的需要调整它。

此外,“Spring Data Rest”项目 (http://www.springsource.org/spring-data/rest) 提供了一种使用 Spring Hateoas 将 JPA 模型导出到 REST(带有 hateoas)的方法。您可能会查看代码以获得灵感,或者只是在您的代码中使用该框架。 (记得将 HalJacksonModule 注册到 ObjectMapper 中)。

关于java - 有条件地将元素渲染为链接以在 Java 中实现 HAL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10969443/

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