I need to read the content of a JSON file on a public GitHub repository using RestTemplate. The content of this JSON file keeps changing quite often, so I need to pull the data from this file once a week. I just need to get the content as String object. Is there anyway to do that?
An example of a JSON file on a public GitHub repository: JSON_File
CodePudding user response:
Using RestTemplate, you can achieve it in this way.
String fortune500String = restTemplate.getForEntity
("https://raw.githubusercontent.com/dariusk/corpora/master/data/corporations/fortune500.json", String.class);
That will return a ResponseEntity
of type String
, of which you can invoke getBody()
to get the String.
That's what you've asked for, but I think there's a better approach. I assume that the data itself is the only thing that changes, and not the structure. Given this assumption, create a model that represents the data, like this:
@Data
public class Fortune500 {
private String description;
private List<String> companies;
}
Then configure RestTemplate to be able to convert from the content type of text/plain
RestTemplate restTemplate = new RestTemplate();
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
mappingJackson2HttpMessageConverter.setSupportedMediaTypes(List.of(MediaType.TEXT_PLAIN));
restTemplate.getMessageConverters().add(mappingJackson2HttpMessageConverter);
Then you can have RestTemplate return an instance of the model, which will be much easier for you to work with.
Fortune500 fortune500 = restTemplate.getForEntity
("https://raw.githubusercontent.com/dariusk/corpora/master/data/corporations/fortune500.json", Fortune500.class).getBody();