I am new to spring and trying to invoke an api using RestTemplate from my @Service class. I will be getting the response in the from of JSON.
I followed the json parsing with resttemplate to create my POJOs from the JSON response and used the following code to invoke the Rest API.
ResponseEntity<BackendAPI> response = restTemplate.exchange(URL,
HttpMethod.GET, requestEntity, BackendAPI.class);
Then using the getter setters I am extracting the values from BackendAPI class and creating the JSON Object FrontendAPI.class to send the response to the caller of my sprint boot api.
Now there is another way of doing the same without manually creating the POJOs rather using ObjectMapper to dynamically create the JSON Object from the backend api response and traversing through the nodes to retrieve the values to create the FrontendAPI.class object as below.
String response = restTemplate.getForObject(targetUrl, String.class);
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readValue(response, JsonNode.class);
JsonNode uri = rootNode.get("uri");
My JSON response from backend is similar to below
Please don't misunderstand me, but I think that Spring RESTTemplate exactly does that, i.e parses a low-level Json string and populates fields of a POJO, and I'm also pretty sure it does the work far better than any code that you or me could write. Generally speaking, if a framework offers you some facility, it's better to use it instead trying an handmade solution -unless there are very, very good reasons to choose another approach.
Gravity is a harsh mistress. But this tiny ad is pretty easy to deal with: