如何从 RestTemplate 获取 JSON 值

How to get JSON value from RestTemplate

我想从 RestTemplate 请求中检索 JSON 文件的值。不幸的是,我不知道如何进行。我正在使用以下方法:

RestTemplate restTemplate = new RestTemplate();
final String url = "http://localhost:3333/command/core/get-csrf-token";

public String getToken() {
    String token = restTemplate.getForObject(url, String.class);
    System.out.println(token);
    return token;

我得到一个字符串作为输出{"token":"myToken"}

是否可以直接检索 JSON 的值?

用库(例如 Jackson)解析 JSON 并获取 token 字段。

String json = restTemplate.getForObject(url, String.class);
ObjectMapper mapper = new ObjectMapper();
return mapper.readTree(json).get("token").asText();

当您说 String.class 时,您是在要求 RestTemplate 将结果作为字符串提供给您。相反,您可以执行以下任一操作:

class TokenHolder {
    String token;
}

TokenHolder holder = restTemplate.getForObject(url, TokenHolder.class);
holder.getToken();

// this is necessary because of generic type erasure
private static final ParameterizedTypeReference<Map<String, String>> MAP_TYPE = 
     new ParameterizedTypeReference<Map<String, String>>() {};

Map<String, String> map = restTemplate.getForObject(url, MAP);
map.get("token");

通常首选“强类型”TokenHolder。 Lombok 的 @Value 和 brand-new Java 记录功能可以帮助创建这样的 类,几乎没有样板文件。