我已经看过许多其他帖子的回复,但想了解是否有更好的方法来做同样的事情。
要求: - 我正在使用restTemplate与Web服务进行通信,该服务返回动态的JSON输出。作为消费者,我不想访问所有领域,但对其中的一些领域感兴趣。我正在使用Spring框架和Jackson解析器,并找到了访问它的方式
String response = restTemplate.getForObject(targetUrl, String.class);
System.out.println(response);
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readValue(response, JsonNode.class);
JsonNode uri = rootNode.get("uri");
System.out.println(uri.asText());
你知道更好的方法吗?映射到java Object是我不想做的事情,因为json输出不在我的控件中
答案 0 :(得分:2)
如果RestTemplate
配置了HttpMessageConverters
提供的默认 Jackson2ObjectMapperBuilder
,您可以直接从JsonNode
获取restTemplate.getForObject
{1}}。
例如,
ArrayNode resources = restTemplate.getForObject("/resources", ArrayNode.class);
或者,
ObjectNode resource = restTemplate.getForObject("/resources/123", ObjectNode.class);
请注意,ArrayNode
和ObjectNode
是JsonNode
的子类。