如何从HTTP响应中获取JSON值?[关闭]

r9f1avp5  于 2023-05-02  发布在  其他
关注(0)|答案(3)|浏览(120)

**已关闭。**此问题正在寻求书籍、工具、软件库等的建议。它不符合Stack Overflow guidelines。目前不接受答复。

我们不允许问题寻求书籍,工具,软件库等的建议。您可以编辑问题,以便可以用事实和引用来回答。
两年前关闭。
Improve this question
我想从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"}

hgtggwj0

hgtggwj01#

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

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

参考: www.example.com

doinxwow

doinxwow2#

尝试

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

hsvhsicv3#

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

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字段。

相关问题