如何从HTTP响应中获取JSON值?

时间:2020-07-31 14:56:48

标签: java json http get

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

CloseableHttpClient client = HttpClientBuilder.create().build();
HttpGet get = new HttpGet(new URI("http://localhost:3333/command/core/get-csrf-token"));
HttpEntity entity = client.execute(get).getEntity();

我确实得到了我尝试的预期文件:

return EntityUtils.toString(entity);

并作为输出:{"token":"myToken"}

3 个答案:

答案 0 :(得分:2)

您可以将JSON字符串转换为JSONObject,然后使用getString()方法获取令牌

JSONObject result = new JSONObject(EntityUtils.toString(entity));
String token = result.getString("token"); 

答案 1 :(得分:0)

尝试

JSONObject jsonObject = new JSONObject(EntityUtils.toString(entity));
String token = jsonObject.getString("token");

答案 2 :(得分:-1)

您可以简单地使用正则表达式(不需要其他库)。

public static void main(String[] args){

    String json = "{\"token\":\"myToken\"}";

    System.out.println(extractToken(json));

}

public static String extractToken(String json){

    String regexToken = "(?:.*\\\"token\\\"\\s*:\\s*\\\")(?<token>.*?)(?:\\\".*)";
        
    Pattern patternToken = Pattern.compile(regexToken, Pattern.DOTALL);
    Matcher matcherToken = patternToken.matcher(json);
    
    if(matcherToken.matches()){
        return matcherToken.group("token");
    }else{
        return "token_not_found";
    }

}

即使在具有多个字段的json上也可以使用。唯一的条件是整个json中只有一个token字段。