如何将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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...