Java: проблема парсера JSON с теми же строками - PullRequest
0 голосов
/ 17 августа 2011

Я написал этот код:

private ArrayList<HashMap<String, HashMap<Integer, String>>> listContent2 = new ArrayList<HashMap<String, HashMap<Integer, String>>>();

public ArrayList<HashMap<String, HashMap<Integer, String>>> content() {
    JSONObject json = JSONfunctions.getJSONfromURL("http://...");
    try {
        JSONArray hotspots = json.getJSONArray("hotspots");
        HashMap<String, HashMap<Integer, String>> mapContentHotspot = new HashMap<String, HashMap<Integer, String>>();
        for (int i = 0; i < hotspots.length(); i++) {
            JSONObject e = hotspots.getJSONObject(i);
            JSONArray actions = new JSONArray(e.getString("actions"));

            for (int j = 0; j < actions.length(); j++) {
                JSONObject e2 = actions.getJSONObject(j);
                HashMap<Integer, String> mapContent = new HashMap<Integer, String>();

                switch (e2.getInt("activityType")) {
                    case 27:
                        mapContent.put(e2.getInt("activityType"), e2.getString("uri"));
                    case 2:
                        mapContent.put(e2.getInt("activityType"), e2.getString("uri"));
                    case 1:
                        mapContent.put(e2.getInt("activityType"), e2.getString("uri"));
                    //default:
                        //break;
                }

                mapContentHotspot.put(e.getString("id"), mapContent);
            }

            listContent2.add(mapContentHotspot);
        }
    } catch (JSONException e) {
        Log.e("log_tag", "Error parsing data " + e.toString());
    }
    return listContent2;
}

, чтобы взять содержимое этого массива json: http://pastebin.com/bXfwcQ2U Проблема в разделе «действия».Я пытаюсь взять 3 "URI", но я беру только последний (с "ActivityType": "1").Где моя ошибка в моем коде Java?спасибо!

Ответы [ 2 ]

0 голосов
/ 17 августа 2011

Возможно создание mapContent следует переместить за пределы самого внутреннего цикла.

0 голосов
/ 17 августа 2011

Вы должны добавить разрыв !!! в вашем коде

case 27:
                    mapContent.put(e2.getInt("activityType"), e2.getString("uri"));
                    break;
                case 2:
                    mapContent.put(e2.getInt("activityType"), e2.getString("uri")); 
                    break;
                case 1:
                    mapContent.put(e2.getInt("activityType"), e2.getString("uri"));
                    break;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...