【问题标题】:Looping and converting JSON Object to Array循环并将 JSON 对象转换为数组
【发布时间】:2011-12-24 20:49:21
【问题描述】:

我是 Java 和 Android 编程的新手,我看过很多教程,但我对如何遍历 JSONObject 并将其设置到我的类有点无知。

JSON 数据示例: http://sickbeard.com/api/#history

我做的课:

public Episode(JSONObject obj) {
        try {
            this.id =   Integer.parseInt(obj.getString("episode").toString());
            this.tvId = Integer.parseInt(obj.getString("tvdbid").toString());
            this.resource = obj.getString("resource").toString();
        } catch (NumberFormatException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

我到了这个地步……

ArrayList<Episode> episodeList = new ArrayList<Episode>();
            JSONObject data = new JSONObject();
            for(int i = 0; i < 2; i++) {
                try {
                    data = response.getJSONObject("data");
                    episodeList.add(new Episode(data));
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
            return null;
            // for each entry create new episode :)
        } else {
            return null;
        }

【问题讨论】:

  • SSCC-example 会很棒,因为我们既不知道 response 是什么,也不知道为什么你甚至有那个 for 循环。
  • 找到解决方案,见下文。无论如何谢谢:)
  • 没问题,很高兴你自己做的!

标签: java android json object


【解决方案1】:

找到了:)

try {
            response = new JSONObject(con.query("history", parameters));
            JSONArray data = response.getJSONArray("data");
            for(int i = 0; i < data.length(); i++) {
                try {
                    episodeList.add(new Episode((JSONObject) data.get(i)));
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

【讨论】:

    【解决方案2】:
    //         is = entity.getContent();
    ArrayList<String> myList = new ArrayList<String>();
    
    
                  //convert response to string
                try{
    
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    is.close();
                    result = sb.toString();
    
    
                } catch (Exception e) {
                    Log.e("log_tag", "Error converting result "+e.toString());
                }
    
    
    
    
                //parse json data
                try{
                        jArray = new JSONArray(result);
    
    
                        for(int i=0;i<jArray.length();i++){
    
                            json_data = jArray.getJSONObject(i);
    
                            myList.add(json_data.getString("id"));
                            Log.i("log_tag","id: " + json_data.getString("id"));
                        }
    
                }
                catch(JSONException e){
                        Log.e("log_tag", "Error parsing data "+e.toString());
                }
    
    
    return myList;
    

    // 然后你可以收到这个 myList :

    ArrayList<String> get_data_id = postData();
    // get_data_id = myList
    get_data_id.get(0) - it is first element,
    get_data_id.get(1) - it is second element
    

    .... 示例

    json data is : [{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"},{"id":"5"},{"id":"6"}]
                            {in loop}   myList.add(json_data.getString("id"));
    get_data_id.get(0) = 1
    get_data_id.get(1) = 2
    get_data_id.get(2) = 3
    ..........
    :)
    

    祝你好运

    【讨论】:

      猜你喜欢
      • 2021-11-26
      • 2017-09-20
      • 2021-09-29
      • 2019-09-28
      • 1970-01-01
      • 2012-07-21
      • 2020-10-02
      • 1970-01-01
      相关资源
      最近更新 更多