我想从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"}
答案 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
字段。