RestTemplate和访问json

Mil*_*ind 5 spring json jackson resttemplate

我已经看到许多其他帖子的回复,但想了解是否有更好的方法来做同样的事情。

要求:-我正在使用restTemplate与Web服务进行通信,该Web服务返回动态的JSON输出。作为消费者,我不想访问所有字段,但对其中几个字段不感兴趣。我在Jackson解析器中使用Spring框架,并找到了访问它的方法

     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());
Run Code Online (Sandbox Code Playgroud)

您知道更好的方法吗?我不想做映射到java对象的事情,因为json输出不在我的控件中

Som*_*omu 5

如果您RestTemplate配置了默认值 HttpMessageConverters(由 提供) ,您可以直接从Jackson2ObjectMapperBuilder获取。JsonNoderestTemplate.getForObject

例如,

ArrayNode resources = restTemplate.getForObject("/resources", ArrayNode.class);
Run Code Online (Sandbox Code Playgroud)

或者,

ObjectNode resource = restTemplate.getForObject("/resources/123", ObjectNode.class);
Run Code Online (Sandbox Code Playgroud)

请注意,ArrayNodeObjectNode是 的子类JsonNode