如何使用 RestTemplate 从 GitHub public 存储库中读取 JSON 文件内容?

How to read a JSON file content from GitHub public repository using RestTemplate?

我需要使用 RestTemplate 读取 public GitHub 存储库中 JSON 文件的内容。这个 JSON 文件的内容经常变化,所以我需要每周从这个文件中提取一次数据。我只需要将内容作为 String 对象获取。有办法吗?

JSON 文件在 public GitHub 存储库中的示例:JSON_File

使用RestTemplate,可以这样实现

String fortune500String = restTemplate.getForEntity
   ("https://raw.githubusercontent.com/dariusk/corpora/master/data/corporations/fortune500.json", String.class);

这将 return 类型为 StringResponseEntity,您可以调用其中的 getBody() 来获取字符串。

这就是您所要求的,但我认为还有更好的方法。我假设数据本身是唯一发生变化的东西,而不是结构。鉴于此假设,创建一个表示数据的模型,如下所示:

@Data
public class Fortune500 {
  private String description;
  private List<String> companies;
}

然后配置RestTemplate可以从text/plain

的内容类型进行转换
RestTemplate restTemplate = new RestTemplate();
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
mappingJackson2HttpMessageConverter.setSupportedMediaTypes(List.of(MediaType.TEXT_PLAIN));
restTemplate.getMessageConverters().add(mappingJackson2HttpMessageConverter);

然后你可以让 RestTemplate return 成为模型的一个实例,这样你会更容易使用。

Fortune500 fortune500 = restTemplate.getForEntity
    ("https://raw.githubusercontent.com/dariusk/corpora/master/data/corporations/fortune500.json", Fortune500.class).getBody();