我想从 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"}
您可以将 JSON 字符串转换为
JSONObject
(来自 org.json),然后使用 getString()
方法获取令牌
JSONObject result = new JSONObject(EntityUtils.toString(entity));
String token = result.getString("token");
参考:http://stleary.github.io/JSON-java/org/json/JSONObject.html#JSONObject-java.lang.String-
试试
JSONObject jsonObject = new JSONObject(EntityUtils.toString(entity));
String token = jsonObject.getString("token");
您可以简单地使用正则表达式(不需要额外的库)。
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
字段