我们正在尝试为使用Spring数据创建的API创建Java客户端。
有些endpoint返回包含_embedded和_links属性的HAL+JSON响应。
{
"_embedded": {
"plans": [
{
...
}
]
},
...
}
_Embedded对象的内容也可以变化,尝试使用泛型的解决方案,如下面的示例,最终返回给我们的是LinkedHashMap对象列表,而不是预期的类型。
class PaginatedResponse<T> {
@JsonProperty("_embedded")
Embedded<T> embedded;
....
}
class Embedded<T> {
@JsonAlias({"plans", "projects"})
List<T> content; // This instead of type T ends up deserialising as a List of LinkedHashMap objects
....
}
我不确定上述问题是否与这份2015年的Jackson bug报告相关。
到目前为止,我们唯一的解决方案是为每种类型的内容创建一个分页响应(带有显式定义的类型),或者为我们期望接收的每种类型的对象包含一个列表
所以我们对这个相当分散的问题的主要问题是,在不使用Spring的情况下,应该如何导航这样的API?
我们不认为使用任何形式的Spring是可以接受的解决方案。同时,我在这里可能大错特错,但在java世界中Spring似乎是唯一一个积极支持/促进HAL/HATEOAS的框架?
如果这个问题中有错误表达的概念、假设和术语,我很抱歉,但我们正试图围绕这样一个实现的哲学以及如何从Java的角度来处理它。
您可以尝试使用超级类型令牌来消费HATEOS API。一种处理各种hateos响应的通用方法。
例如:
在泛型类下面处理响应
public class Resource<T> {
protected Resource() {
this.content = null;
}
public Resource(T content, Link... links) {
this(content, Arrays.asList(links));
}
}
ObjectMapper objectMapper = new ObjectMapper();
Resource<ObjectA> objectA = objectMapper.readValue(response, new TypeReference<Resource<ObjectA>>() {});
Resource<ObjectB> objectB = objectMapper.readValue(response, new TypeReference<Resource<ObjectB>>() {});
http://www.java-allandsundry.com/2014/01/consument-spring-hateoas-rest-service.html
我有Spring Boot Hadoop,想要利用Spring HbasTemboard。我的问题是留档只有关于配置和设置的“xml”方式的信息。 与官方文档中显示的xml不同,我如何以及在何处将配置定义为java中的hbase配置? http://docs.spring.io/spring-hadoop/docs/1.0.1.RC1/reference/html/hbase.html
在我的spring boot应用程序中,我使用jackson通过在需要的地方注入来序列化对象。我找到了这样的答案:https://stackoverflow.com/a/32842962/447426,但这一个创建了一个新的映射器--使用jacksons的默认设置。 另一方面,我在官方文件中发现了这一点。我不是很明白。没有示例代码。 那么如何在spring默认对象映射器的基础上配置springs
我正在用Spring(无Spring Boot)构建一个Java客户端,并且必须使用Gson。 我如何告诉Spring使用Gson而不是Jackson? 为了澄清,我使用了反应式WebClient: Pojo应该是这样的: 服务器中的Json是这样的:
Spring Boot 1.4.2参考声明: Springhttp。转换器。首选json映射器=jackson#用于HTTP消息转换的首选json映射器。设置为“gson”以强制使用gson 我们做到了。 我们为首选json映射器设置了gson 但杰克逊还是被利用了。 最后,在排除了Maven中所有向Jackson指出的可传递依赖项之后,我们设法强制Spring Boot使用Gson。 现在的问题
我试图使用Gson发送JsonObjects作为响应。这些JsonObjects是手工构造的,而不是使用objectMapper或GSON。我排除了所有与杰克逊有关的依赖关系。它工作得很好很好。后来,我尝试使用SpringFox添加Swagger文档。现在它抛出以下异常:
我花了过去的一天,试图找到一个解决办法,但没有找到任何在线资源,解决了这个问题。 我使用Gson为我的应用程序进行消息转换,它在单元测试之外工作得很好。我甚至添加了bean以优先于Jackson而不是将配置值写入。这只在运行应用程序时起作用。 现在我的问题是,如何使用的Gson序列化/反序列化?我有一个带有批注的类,它的值与实际名称不同。我最接近找到答案的是下面的一个,但没有任何帮助: https