2012-03-26 93 views
0

我有从服务器到android应用程序的以下数组响应。提取JSON数组元素的过程

[ 
{"1": 
[{"name":"IEEE Meeting"},{"date":"2012-04-24 10:30:00"},{"Room":"ZACH102"},{"descr":"Final Meeting"},{"D":0.0057}]}, 
{"2": 
[{"name":"Senior Design Demo"},{"date":"2012-04-24 16:30:00"},{"Room":"ZACH111A"},{"descr":"Demo"},{"D":0.019}]} 
] 

我在接收到响应后执行到JSONArray的转换。

arr = new JSONArray(sb.toString()); 

我该如何去提取名称,日期,房间等个别元素?

回答

0

所以基本上所有的参数,这个顺序 对象1,数组中的2 - 每个对象1,2具有不同的对象名称,日期的阵列,等等。

  1. 将整个数据转换为字符串。
  2. 创建一个新的JSONArray(字符串)。
  3. 在阵列上循环。 (你会使用length()来计数)。
  4. 使用getJSONObject()获取第一个对象。
  5. 使用getJSONArray获取第一个对象中的数组。
  6. 现在再次使用length(),您将获得其中的JSONObjects数量。
  7. 循环播放对象的数量并调用getString()或getDouble()后首先获取JSONObject()。
  8. 重复了其他对象的列表,并重复步骤4 - 7
+0

谢谢!这就是我一直在寻找的东西。 – maknelly 2012-03-26 04:31:21

+0

@maknelly嗨,我刚刚写了一篇关于Android中JSON解析的教程。既然你最近遇到了一些麻烦,我想知道你是否可以通过它,看看它是否有帮助。谢谢! http://www.shubhayu.com/android/json-parser-tutorial-for-android-using-jsonobjects – Shubhayu 2012-03-28 12:08:30

0

您是否检出了JSONArray的文档?

从文档中,内部表单是一个对象,它具有用于按索引访问值的getopt方法以及用于添加或替换值的方法put。值可以是以下任何类型:Boolean,JSONArray,JSONObject,NumberStringJSONObject.NULL对象。

A get方法返回一个值,如果可以找到一个值,并且抛出一个异常,如果找不到。一个opt方法返回一个默认值而不是抛出一个异常,所以对于获取可选值很有用。

通用的get()opt()方法返回一个可以强制转换或查询类型的对象。还有类型为getopt的方法可以为你进行类型检查和类型强制。

+0

我在想,如果我不得不选择由getJSONObject(1)第一个对象,然后从对象我得到的名称,日期?在第一个对象中,1是数组的关键,但是如何从该数组中提取元素? – maknelly 2012-03-26 03:00:19

+0

从你的服务器响应中,你有一个带有两个JSONObject类型元素的JSONArray。每个JSONOject都有一个名称/值对。在你的情况下,值是另一个JSONArray。这个JSONArray有5个也是JSONObject类型的元素。每个这些correpsonds到你的名字,日期房间,等等。 – mcorley 2012-03-26 03:12:43

0

,你可以得到这样的

JSONArray main_array = json.getJSONArray("array"); 
for(int i=0;i<main_array.length();i++) {    
    main_object = main_array.getJSONObject(i); 
    String name = main_object.getString("name"); 
    String date = main_object.getString("date"); 
}