在java中解析JSON响应(包括列表)

在java中解析JSON响应(包括列表),java,json,jsonobject,Java,Json,Jsonobject,我做了一个http客户端,我得到了一个响应。我使用一个JSONObject来解析数据,当我执行下面的代码时,它会很好地打印出所有JSON HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); if(entity!=null){ try(InputStream instream = entity.getCo

我做了一个http客户端,我得到了一个响应。我使用一个JSONObject来解析数据,当我执行下面的代码时,它会很好地打印出所有JSON

HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        if(entity!=null){
            try(InputStream instream = entity.getContent()) {
                String responseString = readInputStream(instream);
                JSONObject job = new JSONObject(responseString);
                statusLabel.setText("Command Result: " + job.toString());
以下是ReadInputsRealm函数:

static private String readInputStream(InputStream inputStream) throws IOException {
    BufferedReader reader = new BufferedReader(new InputStreamReader(
            inputStream, "UTF-8"));
    String tmp;
    StringBuilder sb = new StringBuilder();
    while ((tmp = reader.readLine()) != null) {
        sb.append(tmp).append("\n");
    }
    if (sb.length() > 0 && sb.charAt(sb.length() - 1) == '\n') {
        sb.setLength(sb.length() - 1);
    }
    reader.close();
    return sb.toString();
}
如果我将其从job.toString()更改为:

它打印一个1,这是正确的,它一直工作到我的_列表。我不知道如何解析这个列表。我在下面放了一段回应。我尝试了“我的列表”、“我的列表[]”和“我的列表[0]”,但都没有成功。我没有找到JSONObject“blank”

{"result":1,  "ver":1,"total":2,"catch":true,"my_list":[{"id":3,"mid":0,"format":3,"user":4,"property":1,"type":0,"title":"hello","start":146,"end":1464,"hid":3,"bid":1,"reason":1,"time":0,"creator":"1","hello":0,"my":0,"year":"0","ggg":614,"name":"","ch":"0","attr":0,"type":1,"vtype":1,"tm_log": {"fr":4,"action":0,"vr":"82","started":1,"av_ended":2,"tr":1}}

您试图检索的元素被解析为JSONArray,而不是JSONObject。请尝试:

JSONArray my_list = job.getJSONArray("my_list");

您试图检索的元素被解析为JSONArray,而不是JSONObject。请尝试:

JSONArray my_list = job.getJSONArray("my_list");

假设您正在使用json解析器项目json java来解析json,您需要检索JSONArray实例——这就是在JSONObject中存储数组的方式。所以请执行以下操作:
JSONArray my_list=job.getJSONArray(“my_list”);
然后使用JSONArray类的方法访问您的数组。可以在此处找到Javadoc到JSON java包:。还要注意,JSON java非常简单,易于使用JSON解析器项目,但对于任何严肃的项目来说都不是很有效。商业上常用的建议是Jackson JSON处理器,它是速度最快的处理器之一和功能强大的JSON解析器。这里有一些链接可供阅读:,

假设您使用JSON解析器项目JSON java解析JSON,您需要检索JSONArray实例-这就是数组在JSONObject中存储的方式。请执行以下操作:
JSONArray my_list=job.getJSONArray(“my_list”);
然后使用JSONArray类的方法访问您的数组。可以在此处找到Javadoc到JSON java包:。还要注意,JSON java非常简单,易于使用JSON解析器项目,但对于任何严肃的项目来说都不是很有效。商业上常用的建议是Jackson JSON处理器,它是速度最快的处理器之一和功能强大的JSON解析器。这里有一些链接可供阅读:,

为什么你要尝试自己阅读,而不是使用一些现成的东西,如:为什么你要尝试自己阅读,而不是使用一些现成的东西,如:谢谢,现在我可以获得数据了。但是当我做我的清单时。获取(0)它以随机顺序打印数据。有没有办法说只从我的\u列表中获取“id”?谢谢,现在我可以获取数据了。但是当我执行我的\u列表时。获取(0)它以随机顺序打印数据。有没有办法说只从我的\u列表中获取“id”?