如何解决如何将Spring HATEOAS与纯Jackson一起使用
我想手动将数据类转换为其JSON表示形式。数据类应实现HATEOAS类型链接。可以在以下位置找到测试失败的样本项目:https://github.com/dirkbolte/hateoastest。基本上,我希望以下测试通过:
val dataClass = TestData(
data = "some data",selfLink = Link.of("http://localhost/self","self"),otherLink = Link.of("http://localhost/other","other"))
val mappedClass: Map<String,Any?> = objectMapper.convertValue(dataClass)
assertthat(mappedClass).hasEntrySatisfying("_links") {
assertthat(it)
.asInstanceOf(InstanceOfAssertFactories.MAP)
.containsEntry("self","http://localhost/self")
.containsEntry("other","http://localhost/other")
}
因此,在将链接添加到类之后,我想调用objectMapper.convertValue()
以获取映射的表示形式。它创建一个JSON数组,而不是创建JSON对象,因为它直接映射类的links
成员,而不是使用类型转换器。
看来EnableHypermediaSupport
发起的配置仅注册了WebMVC或Webflux的转换器,并随之调整了objectmapper的副本(请参见https://github.com/spring-projects/spring-hateoas/blob/6a6cd3111363597326478fc1ee4af773f61604bb/src/main/java/org/springframework/hateoas/config/WebConverters.java#L49)。因此原始的objectMapper无法适应。因此,用于HATEOAS类型的类型转换器似乎在控制器响应上下文之外不可用。
我尝试找到一种手动注册模块的方法(使用jacksonObjectMapper().registerModule(Jackson2HalModule())
,但这会导致其他错误,而到目前为止,我发现需要重新实现给定配置的许多内部部分已经为您服务。
我该如何通过考试?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。