Java Spring嵌入式读取json+;来自JSON内容类型的hal
我正在阅读一个第三方Rest服务,它返回具有上述结构或类似结构的json内容(内容类型为application/json) 目前,我创建了一个到通用对象的自定义json转换器,该对象具有用于链接、页面的自定义对象和用于嵌入对象的通用类型。因此,我以某种泛泛的方式阅读它。但是,我想通过hateoas对象来实现。我尝试了几种方法,但都有效 在回答其他问题之后,我尝试了许多方法,比如配置RestTamplateJava Spring嵌入式读取json+;来自JSON内容类型的hal,java,json,spring,hateoas,spring-hateoas,Java,Json,Spring,Hateoas,Spring Hateoas,我正在阅读一个第三方Rest服务,它返回具有上述结构或类似结构的json内容(内容类型为application/json) 目前,我创建了一个到通用对象的自定义json转换器,该对象具有用于链接、页面的自定义对象和用于嵌入对象的通用类型。因此,我以某种泛泛的方式阅读它。但是,我想通过hateoas对象来实现。我尝试了几种方法,但都有效 在回答其他问题之后,我尝试了许多方法,比如配置RestTamplate "_embedded": { "employees": [ { "
"_embedded": {
"employees": [
{
"id": "1",
"name": "Some Employee",
"_links": {
"self": {
"href": "http://localhost:8080/employees/1"
}
}
},
{
"id": "2",
"name": "Some Employee",
"_links": {
"self": {
"href": "http://localhost:8080/employees/2"
}
}
},
{
"id": "3",
"name": "Some Employee",
"_links": {
"self": {
"href": "http://localhost:8080/employees/3"
}
}
}
]
},
{
"_links": {
"self": {
"href": "http://localhost:8080/employees{?page,size,sort}"
},
"search": {
"href": "http://localhost:8080/employees/search"
}
},
"page": {
"size": 20,
"totalElements": 3,
"totalPages": 1,
"number": 0
}
}
无法工作并干扰了我的REST配置
我试过这个
@Bean
public OAuth2RestTemplate getOAuth2Rest() {
[...]
OAuth2RestTemplate template = new OAuth2RestTemplate(resourceDetails, clientContext);
List<HttpMessageConverter<?>> existingConverters = template.getMessageConverters();
List<HttpMessageConverter<?>> newConverters = new ArrayList<>();
newConverters.add(getHalMessageConverter());
newConverters.addAll(existingConverters);
template.setMessageConverters(newConverters);
return template;
}
private HttpMessageConverter getHalMessageConverter() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.registerModule(new Jackson2HalModule());
MappingJackson2HttpMessageConverter halConverter =
new TypeConstrainedMappingJackson2HttpMessageConverter(ResourceSupport.class);
halConverter.setSupportedMediaTypes(Arrays.asList(HAL_JSON));
halConverter.setObjectMapper(objectMapper);
return halConverter;
}
ResponseEntity<Resources<MyDto>> entity = restTemplate.exchange(
myUri,
HttpMethod.GET, null,
new ParameterizedTypeReference<Resources<MyDto>>() {}, Collections.emptyMap());
@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)