有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用java处理Json API响应

我一直在试图找出如何处理GET请求的json响应。这是我的请求代码:

String urlString = URL I want to request;

    URL url = new URL(urlString);
    URLConnection conn = url.openConnection();
    InputStream is = conn.getInputStream();
    String response = getStringFromInputStream(is);

我的问题是现在该怎么办。我一直在玩gson,但我不知道如何解析所需信息的响应

我还在网上的某个地方找到了将响应转换为字符串的方法:

 private static String getStringFromInputStream(InputStream is) {

    BufferedReader br = null;
    StringBuilder sb = new StringBuilder();

    String line;
    try {

        br = new BufferedReader(new InputStreamReader(is));
        while ((line = br.readLine()) != null) {
            sb.append(line);
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    return sb.toString();

}

如果有人能帮我解析字符串或以其他方式处理响应,我将不胜感激


共 (2) 个答案

  1. # 1 楼答案

    您可以使用^{}框架将响应解析为Java对象。添加依赖项后,它的工作方式如下:

    假设您从API获得以下响应:

    {
        "id": 1,
        "name": "foo"
    }
    

    可以编写以下代码将其反序列化为对象:

    public class Response {
        private int id;
        private String name;
        //Getters and Setters
    }
    
    //code to convert
    String response = sb.toString();
    ObjectMapper mapper = new ObjectMapper();
    Response responseObject = mapper.readValue(response, Response.class);
    

    如果json无效,它将失败并抛出JsonParseExceptionJsonMappingException。您可以在代码中处理它并做出相应的响应

    Here's关于如何使用Jackson的分步教程

  2. # 2 楼答案

    这取决于您想用Json做什么。我假设您希望将转换为Java对象。 为此,您可以使用Gson或Jackson。 假设您有一个类似json的

    {"userId":"1","userName":"Yasir"}
    

    您的java类

    class User{
    int userId;
    String userName;
    //setters and getters
    }
    

    然后你可以用

    Gson gson = new Gson();
    User user= gson.fromJson(jsonInString, User.class);
    

    创建java对象