Java 从API读取JSON数据

Java 从API读取JSON数据,java,json,rest,Java,Json,Rest,如果这是一个太宽泛的问题,请原谅我,如果是,请对我大喊大叫 我正在用java从RESTAPI检索数据。然后,我希望能够在JSON数据中搜索特定的键值对。据我所知,org.json中的JSONObject是一种很好的方法。到目前为止,我已经: URL url = new URL("api string"); HttpURLConnection connnection = (HttpURLConnection)url.openConnection(); BufferedReader br = ne

如果这是一个太宽泛的问题,请原谅我,如果是,请对我大喊大叫

我正在用java从RESTAPI检索数据。然后,我希望能够在JSON数据中搜索特定的键值对。据我所知,org.json中的JSONObject是一种很好的方法。到目前为止,我已经:

URL url = new URL("api string");
HttpURLConnection connnection = (HttpURLConnection)url.openConnection();

BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));

String input;
StringBuffer sb = new StringBuffer();

while ((input = br.readLine()) != null){
    sb.append(input);
}
br.close();

returnedJSON = new JSONObject(sb.toString());
所以相当标准的get请求代码

首先,我不知道我是否需要JSONObject或JSONArray。我研究的所有内容都使用JSONObject从API写入,但我将检索以下形式的JSON:

[{x:y,a:b,foo:bar},{x:y,a:b,foo:bar},…]

如果有意义的话,这里有多个JSON“条目”,我想查看整个JSON字符串,看看同一条记录中是否存在两条数据。例如:“foo”的值是否是“x”的值为“y”的记录的预期值


我不清楚如何继续,因为这是我第一次正确使用JSON。

首先,您应该使用
JSONArray
而不是
JSONObject
,因为它是从API响应接收的对象数组

现在迭代这个
数组
并获取每个
JSONObject
,它们实际上以
HashMap
(键值对)的形式接收


现在,您可以通过访问它们的键来获取
JSONObject
的每个元素。

如果您知道您得到的是什么类型的JSON响应,在您的例子中是JSONArray,那么就实例化JSONArray而不是JSONObject谢谢!接下来的代码在JSONArray的上下文中仍然有意义吗?是的,到达JSONArray或JSONObject的方式保持不变。一旦得到了特定的格式,就可以按照自己的方式解析响应。因此,既然我使用了JSONArray而不是obj,我的理解是,我现在只是在搜索指定值时通过循环遍历数组?