2011-05-31 132 views
0

首先感谢Pentium10的this answer!它让我更进了一步。需要帮助从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"]] 

此输出填充如下列表阵列产生一个JSONArray;

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

感谢马丁

+0

你能显示打印列表(0)的代码吗......你粘贴? – WarrenFaith 2011-05-31 11:40:06

+0

System.out.println(list(i)); – martincm 2011-05-31 12:03:14

+0

是否将代码添加到您的问题中?你应该有点沟通:) – WarrenFaith 2011-05-31 12:26:50

回答

0

编辑:我想你的榜样,代码几乎可以工作,但有一点小错误。您不应使用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(); 
} 
+0

@WarrenFaith对不起,我不遵循这将如何帮助 – martincm 2011-05-31 12:30:40

+0

它只是迭代通过json数组。 – Hades 2011-05-31 12:37:01

+0

@martincm更新了我的答案。此代码经过测试... – WarrenFaith 2011-05-31 13:17:23

1

比方说,你有一个JSONArray变量称为jsonArray,它包含您的数据。

提取数据,你需要做什么用:

jsonArray.getJSONObject(INT指数)(返回一个JSONObject) - 使用来获取对象 jsonArray.getJSONArray(INT指数)内的对象(返回一个JSONArray) - 用于获得数组中的数组

其余的是自解释的。

jsonArray.get(INT指数)(返回一个Object) jsonArray.getBoolean(INT指数)(返回一个布尔) jsonArray.getDouble(INT指数)(返回Double) jsonArray.getInt(INT指数) (返回一个整数) jsonArray.getLong(int index)(返回一个Long) jsonArray.getString(int index)(返回一个字符串)

+0

谢谢DallaRosa你能告诉我哪一个是我的qbject或数组。 – martincm 2011-05-31 12:15:51

+0

你在那里有一个数组的数组。 您使用getJSONArray(number)来获取内部数组,然后在第二个数组上使用getString(number)来获取每个值 – DallaRosa 2011-05-31 18:19:43