0

First thanks to Pentium10 for this answer! it got me one step further.

I have a JSONArray which is generated in php by

echo (json_encode($output));

which generates this 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"]]

This outputs the list array filled as follows;

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

what I now need to do is extract this further so that the "" enclosed data is stored in three separate arrays

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

Thanks Martin

Community
  • 1
  • 1
martincm
  • 13
  • 1
  • 6

2 Answers2

1

Let's say you have a JSONArray variable called jsonArray and that it contains your data.

To extract the data, what you need to do it use:

jsonArray.getJSONObject(int index) (returns a JSONObject) - Use to get an object inside the object jsonArray.getJSONArray(int index) (returns a JSONArray) - use to get an array inside an array

the rest is self explanatory.

jsonArray.get(int index) (returns an Object) jsonArray.getBoolean(int index) (returns a Boolean) jsonArray.getDouble(int index) (returns a Double) jsonArray.getInt(int index) (returns an Integer) jsonArray.getLong(int index) (returns a Long) jsonArray.getString(int index) (returns a String)

DallaRosa
  • 5,737
  • 2
  • 35
  • 53
  • Thanks DallaRosa can you tell me which one I have is it an qbject or an array. – martincm May 31 '11 at 12:15
  • what you have there is an array of arrays. you use getJSONArray(number) to get the inner array and then use getString(number) on this second array to get each of the values – DallaRosa May 31 '11 at 18:19
0

edit: I tried your example and the code nearly works but has one little mistake. You shouldn't use list to get the JSONArray jsonList.

This works (tested):

// 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();
}
WarrenFaith
  • 57,492
  • 25
  • 134
  • 150
  • @WarrenFaith sorry I dont follow how this will help – martincm May 31 '11 at 12:30
  • It's just iterating through the json array. – Hades May 31 '11 at 12:37
  • @WarrenFaith Thanks I can see where I went wrong. I was trying to read from the whole list and not list(i). On the first iteration list(0) exists but list(1) does not hence the error. With your code I don't need list.add(jsonArray.getString(i)); – martincm May 31 '11 at 14:38