Цикл и преобразование объекта JSON в массив

1

Я новичок в 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;
        }
  • 1
    Пример SSCC был бы хорош, так как мы не знаем, что такое response , и почему у вас даже есть этот цикл for.
  • 0
    Нашел решение, см. Ниже. Спасибо, в любом случае :)
Показать ещё 1 комментарий
Теги:
object

2 ответа

4
Лучший ответ

Нашел это :)

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();
        }
1
//         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;

//тогда u может получить этот 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
..........
:)

Удачи

Ещё вопросы

Сообщество Overcoder
Наверх
Меню