Есть ли другой способ / правильный способ разбора этого массива JSON ?


У меня есть JSON-объект, который содержит некоторые json_array такой: (с орг.codehaus."зарублю".формат JSON.*)

json array:[{"C1":["S1","S2"]},{"C2":["S1","S2"]},{"C3":["S1","S2"]},{"C4":["S1","S2"]}]

Мне надо сделать два списка,один для ключей,другой для элементов каждого ключа.Я сделал так:

//sample: clusterIdList:[C1, C2, C3, C4] and serviceIdList:[S1, S2, S1, S2, S1, S2, S1, S2]

    //get jsonarray by key = serviceCode
    JSONArray array = incident.getJSONArray("serviceCode");


    List<String> clusterIdList = new ArrayList<String>();
    List<String> serviceIdList = new ArrayList<String>();
    String key="";

    for (int i = 0,length=array.length(); i < length; i++) {
        JSONObject b = array.getJSONObject(i);
        key = b.names().getString(0);
        clusterIdList.add(key);
        JSONArray sublist = b.getJSONArray(key);
        for (int j = 0,sublistLength = sublist.length(); j < sublistLength; j++) {
            serviceIdList.add(sublist.getString(j));
        }
    }

Это правильный способ сделать это? или его можно улучшить? Я пытаюсь улучшить мои качества и читабельности кода.



7896
5
задан 25 мая 2011 в 07:05 Источник Поделиться
Комментарии
1 ответ

Это можно утверждать, но я думаю, что вы можете написать напрямую мне < массив.длина(); без заметного замедления (если длина (м) делает все правильно и это просто геттер поля). Делает петли чуть более читабельный, ИМХО. Или хотя бы добавить пробелы: int я = 0, длина = массив.длина();

У меня был заглянет на сайт сбросить, и не мог найти страницу javadoc. Но если JSONArray реализует интерфейс Iterable, вы можете использовать синтаксис foreach, то еще более читабельным.

Я согласен с комментарием Ротора тоже.

В противном случае код выглядит нормально.

3
ответ дан 1 июня 2011 в 11:06 Источник Поделиться