Android从一串数组中获取凌空数据

时间:2018-03-23 04:19:22

标签: java android json android-volley

AM使用android volley发送请求并获得此类响应

   public void onResponse(JSONObject response

       try {
           String responsedata = response.getString("data");

              Log.i("test",responsedata);
            } catch (JSONException e) {
               e.printStackTrace();
           }

     }

以上日志打印

[{"id":1,"identifier":"TYam Plant","header_val":"tyamplant"},
 {"id":2,"identifier":"Touron Plant","header_val":"toroun"}
]

现在我想循环遍历这些并提取

的各个属性的数组
id, identifier, header_val

我该如何解决这个问题。我还是java的新手

2 个答案:

答案 0 :(得分:4)

  

您的回复是 JSONArray 而不是 JSONObject 检查

您需要使用 JSONArray 请求,而不是JSONObject volley 请求

尝试这样解析你的json

    try {
        JSONArray jsonArray= new JSONArray(responsedata);
        for (int i=0;i<jsonArray.length();i++){
            JSONObject object=jsonArray.getJSONObject(i);
            String id=object.getString("id");
            String identifier=object.getString("identifier");
            String header_val=object.getString("header_val");
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }

最好使用google-gson-library

解析您的JSON
  

Gson是一个Java库,可用于将Java对象转换为JSON表示形式。它还可用于将JSON字符串转换为等效的Java对象。 Gson可以处理任意Java对象,包括您没有源代码

的预先存在的对象

示例:How to Parse JSON Array with Gson

答案 1 :(得分:0)

  1. 使用3字段创建自定义对象:id,identifier,header_val
  2. &#13;
    &#13;
    public class YourObject {
            private String id;
            private String identifier;
            private String header_val;
    
            public YourObject(String id, String identifier, String header_val) {
                this.id = id;
                this.identifier = identifier;
                this.header_val = header_val;
            }
    
            public String getId() {
                return id;
            }
    
            public void setId(String id) {
                this.id = id;
            }
    
            public String getIdentifier() {
                return identifier;
            }
    
            public void setIdentifier(String identifier) {
                this.identifier = identifier;
            }
    
            public String getHeader_val() {
                return header_val;
            }
    
            public void setHeader_val(String header_val) {
                this.header_val = header_val;
            }
        }
    &#13;
    &#13;
    &#13;

    1. 循环并添加到列表中:List<YourObject> yourList = new ArrayList<>();
    2. &#13;
      &#13;
          try {
              JSONArray jsonArray= new JSONArray(responseString);
              for (int i=0; i<jsonArray.length();i++){
                  JSONObject object=jsonArray.getJSONObject(i);
                  String id=object.getString("id");
                  String identifier=object.getString("identifier");
                  String header_val=object.getString("header_val");
                  yourList.add(new YourObject(id, identifier, header_val);
              }
          } catch (JSONException e) {
              e.printStackTrace();
          }
      &#13;
      &#13;
      &#13;