简体   繁体   English

JSON对象提取值

[英]JSON Object extract value

I have this code that return a response from an API provider in the format of JSON Object. 我有这段代码以JSON对象的格式返回了API提供程序的响应。 Below is the code: 下面是代码:

public class Authentication {   
    public static void main(String[] args) {
        try {
            URL url = new URL ("https://xxxxx.com");
            String encoding = "xxxxxxxxx";
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setDoOutput(true);
            connection.setRequestProperty  ("Authorization", "Basic " + encoding);
            InputStream content = (InputStream)connection.getInputStream();
            BufferedReader in   = 
                new BufferedReader (new InputStreamReader (content));
            String line;
            while ((line = in.readLine()) != null) {
                System.out.println(line);                                                
            }
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

The above code will return a response like this: 上面的代码将返回如下响应:

{
  "accessToken": "0.AQAAAUmdztB3AAAAAAAEkvg",
  "tokenType": "Bearer",
  "expiresIn": 300
}

So here is the problem, I'm trying to get the value of accessToken only so that i can use it to make an api call. 所以这是问题所在,我试图仅获取accessToken的值,以便可以使用它进行api调用。 I've tried this: 我已经试过了:

String loudScreaming = JSONML.toJSONObject("accessToken").getString("accessToken"); 

But it will return null. 但是它将返回null。 I've read about Jackson but don't have any idea on how to do it. 我已经读过杰克逊,但对如何做一无所知。 Please guide me. 请指导我。 Thanks in advance. 提前致谢。

You don't need Jackson to parse a simple JSON structure. 您不需要Jackson解析一个简单的JSON结构。 This will do the job 这样就可以了

import org.json.JSONObject;

String jsondata = "{\"accessToken\":\"0.AQAAAUmdztB3AAAAAAAEkvg\",\"tokenType\":\"Bearer\",\"expiresIn\": 300}"

JSONObject obj = new JSONObject(jsondata);
String accessToken = obj.getJSONObject().getString("accessToken");

Here are a couple simple examples showing both how you could use Jackson (version 2.4.3) and how you could use GSON (version 2.3). 这是几个简单的示例,它们显示了如何使用Jackson (2.4.3版)以及如何使用GSON (2.3版)。 These are pretty basic use cases and their documentation shows how versatile both of these libraries are. 这些是非常基本的用例,它们的文档显示了这两个库的通用性。

final String JSON_STRING = "{\n" +
        "  \"accessToken\": \"0.AQAAAUmdztB3AAAAAAAEkvg\",\n" +
        "  \"tokenType\": \"Bearer\",\n" +
        "  \"expiresIn\": 300\n" +
        "}";
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode jackson = objectMapper.readValue(JSON_STRING, ObjectNode.class);
JsonNode jacksonAccessToken = jackson.get("accessToken");
System.out.println("Jackson accessToken: " + jacksonAccessToken);

Gson gson = new Gson();
JsonObject gsonObject = gson.fromJson(JSON_STRING, JsonObject.class);
JsonElement gsonAccessToken = gsonObject.get("accessToken");
System.out.println("GSON accessToken: " + jacksonAccessToken);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM