我正在尝试在JAX-RS服务中实现HAL standard for JSON。我的项目由包含许多项目的用户组成,这些项目包含许多节点,其中包含各种数据和指向其他节点的指针。
因此,当一个端点被击中时,我想将对象嵌入一层深度,然后链接:
等等。
杰克逊JSONFilters看起来很近,但我并没有抓住它。特别相关的是,有时属性将被映射到“_embedded”的集合中,有时使用不同的技术映射到“_links”。
有人试过这样的事吗?
有HalBuilder,但似乎需要手动序列化,我想避免。然后,杰克逊似乎差不多就像手工序列化一样。
答案 0 :(得分:4)
您需要实施自定义Jackson Serializer(http://jackson.codehaus.org/1.7.9/javadoc/org/codehaus/jackson/map/JsonSerializer.html)
看看Spring Hateoas项目。他们实施了杰克森扩展HalJacksonModule
(https://github.com/SpringSource/spring-hateoas/commit/61e73107c1213556c025dc8f68a8784daf089796
)启用HAL序列化到杰克逊。我认为你可以使用它或根据你的需要进行调整。
此外,项目“Spring Data Rest”(http://www.springsource.org/spring-data/rest)提供了一种使用Spring Hateoas将JPA模型导出到REST(使用hateoas)的方法。您可以查看代码以获取灵感,或者只是在代码中使用框架。 (请记住将HalJacksonModule
注册到ObjectMapper
)。
答案 1 :(得分:0)
我发现RestExpress库非常棒,它包含对HAL的支持。作者完成了基于一个简单配置构建序列化机制和链接的所有工作。