我想从WebClient获得响应并将其转换为Map,而无需为响应创建任何Class。可能吗?所以我想在下面这样。下面的代码不是有效的代码,只是我想要的一个想法。
public Map<String, String> someFunction() {
return webClient.post()
.uri("/some/path")
.retrieve()
.bodyToFlux(HashMap.class)
.block();
答案 0 :(得分:1)
我将首先尝试将响应对象放入String中,并确保我接受JSON类型作为回报。将响应放入字符串后,您可以尝试使用fastxml的jackson databind库,该库可以将JSON字符串转换为Hashmap。
例如
ObjectMapper mapper = new ObjectMapper();
String json = "{\"name\":\"abc\", \"age\":25}";
Map<String, Object> map = new HashMap<String, Object>();
// convert JSON string to Map
map = mapper.readValue(json, new TypeReference<Map<String, String>>(){});
System.out.println(map);
这是databind库和核心库java docs链接
答案 1 :(得分:0)
我这样解决了:
public Map<String, String> someFunction() {
return webClient.post()
.uri("/some/path")
.retrieve()
.bodyToFlux(TypedMap.class)
.block();
}
private static class TypedMap extends HashMap<String, String>{}
答案 2 :(得分:0)
如果您对保存 LOC 感兴趣,您可能需要查看核心 Spring Framework 类:ParameterizedTypeReference<T>
, found here。
public Map<String, String> someFunction() {
return webClient.post()
.uri("/some/path")
.retrieve()
.bodyToFlux(new ParameterizedTypeReference<Map<String,String>>(){})
.block();
}
干杯。