Нужна помощь в извлечении данных из JSONArray - PullRequest
0 голосов
/ 31 мая 2011

Первое спасибо Pentium10 за этот ответ ! это сделало меня еще на шаг дальше.

У меня есть JSONArray, который генерируется в php

echo (json_encode($output));

, который генерирует этот вывод

// linebreaks only for readability, they do not exist in the response
[["Fitch's Chemist","731 Hay St","(08) 9321 6411"],
["Ferrara Karaoke Bar","67 Milligan Street","(08) 9481 1909"],
["Target: Perth","712-720 Hay St","(08) 9327 3700"],
["C Restaurant","44 St Georges Tce","(08) 9220 8333"],
["Celona Joe Tailors","146 Murray St","(08) 9325 8274"],
["Fashion In Colour","Shop 2, 138 Barrack St","(08) 9218 8233"],
["Mainpeak","858 Hay St","(08) 9322 9044"],
["Fj Storen Painting Contractors","34 Queen St","(08) 9486 9292"],
["Financial Pathfinders","Level 4\/81 St Georges Tce","(08) 9213 9699"],
["Seasons of Perth","37 Pier St","(08) 9325 7655"],
["David Jones","622 Hay St","(08) 9210 4000"],
["Pharmacity Chemist Supermart","717 Hay St","(08) 9322 6921"],
["Austcare","10 Pier St","(08) 9325 9330"],
["Western Australia","8 Pier St","(08) 9261 6222"],
["Oceanic Cruises","5 Barrack","(08) 9325 1191"]]

Выводит массив списка, заполненный следующим образом:

list(0)["Fitch's Chemist","731 Hay St","(08) 9321 6411"]
list(1)["Ferrara Karaoke Bar","67 Milligan Street","(08) 9481 1909"]

Теперь мне нужно извлечь это, чтобы «» вложенные данные были сохранены в трех отдельных массивах

    try {
        JSONArray jsonArray = new JSONArray(response);
        List<String> list = new ArrayList<String>();
        for (int i=0; i<jsonArray.length(); i++) {
            list.add( jsonArray.getString(i) );
            JSONArray jsonList = new JSONArray(list);
            BusinessName.add(jsonList.getString(0));
            Address.add(jsonList.getString(1));
            TelNo.add(jsonList.getString(2));
        }
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }

Спасибо, Мартин

Ответы [ 2 ]

1 голос
/ 31 мая 2011

Допустим, у вас есть переменная JSONArray с именем jsonArray и она содержит ваши данные.

Чтобы извлечь данные, вам нужно использовать:

jsonArray.getJSONObject (int index) (возвращает JSONObject) - используется для получения объекта внутри объекта. jsonArray.getJSONArray (int index) (возвращает JSONArray) - используется для получения массива внутри массива

остальное не требует пояснений.

jsonArray.get (int index) (возвращает объект) jsonArray.getBoolean (int index) (возвращает логическое значение) jsonArray.getDouble (int index) (возвращает двойное значение) jsonArray.getInt (int index) (возвращает значение intЦелое число) jsonArray.getLong (int index) (возвращает Long) jsonArray.getString (int index) (возвращает String)

0 голосов
/ 31 мая 2011

edit: я попробовал ваш пример, и код почти работает, но есть одна маленькая ошибка. Вы не должны использовать list, чтобы получить JSONArray jsonList.

Это работает (проверено):

// this string is just used for testing, use your response...
String json = "[[\"Fitch's Chemist\",\"731 Hay St\",\"(08) 9321 6411\"],"
            + "[\"Ferrara Karaoke Bar\",\"67 Milligan Street\",\"(08) 9481 1909\"],"
            + "[\"Target: Perth\",\"712-720 Hay St\",\"(08) 9327 3700\"],"
            + "[\"C Restaurant\",\"44 St Georges Tce\",\"(08) 9220 8333\"],"
            + "[\"Celona Joe Tailors\",\"146 Murray St\",\"(08) 9325 8274\"],"
            + "[\"Fashion In Colour\",\"Shop 2, 138 Barrack St\",\"(08) 9218 8233\"],"
            + "[\"Mainpeak\",\"858 Hay St\",\"(08) 9322 9044\"],"
            + "[\"Fj Storen Painting Contractors\",\"34 Queen St\",\"(08) 9486 9292\"],"
            + "[\"Financial Pathfinders\",\"Level 4/81 St Georges Tce\",\"(08) 9213 9699\"],"
            + "[\"Seasons of Perth\",\"37 Pier St\",\"(08) 9325 7655\"],"
            + "[\"David Jones\",\"622 Hay St\",\"(08) 9210 4000\"],"
            + "[\"Pharmacity Chemist Supermart\",\"717 Hay St\",\"(08) 9322 6921\"],"
            + "[\"Austcare\",\"10 Pier St\",\"(08) 9325 9330\"],"
            + "[\"Western Australia\",\"8 Pier St\",\"(08) 9261 6222\"],"
            + "[\"Oceanic Cruises\",\"5 Barrack\",\"(08) 9325 1191\"]]";

try {
    JSONArray jsonArray = new JSONArray(json);
    List<String> list = new ArrayList<String>();
    for (int i = 0; i < jsonArray.length(); i++) {
        list.add(jsonArray.getString(i));
        // thats the correct line:
        JSONArray jsonList = new JSONArray(jsonArray.getString(i));
        // Used for debug/test, use your own objects BusinessName, Address and TelNo
        System.out.println(jsonList.getString(0) + ":" + jsonList.getString(1) + ":" + jsonList.getString(2));
    }
} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...