parsingJSON对象中的JSON数组
我有一些结构如下的JSON:
{"source":[ {"name":"john","age":20}, {"name":"michael","age":25}, {"name":"sara", "age":23} ] }  我已经将这个JSONstring命名为mainJSON 。 我试图用下面的Java代码访问元素“name”和“age”: 
 JSONArray jsonMainArr = new JSONArray(mainJSON.getJSONArray("source")); for (int i = 0; i < jsonMainArr.length(); i++) { // **line 2** JSONObject childJSONObject = jsonMainArr.getJSONObject(i); String name = childJSONObject.getString("name"); int age = childJSONObject.getInt("age"); } 
第二行显示以下例外情况:
 org.json.JSONException: JSONArray initial value should be a string or collection or array. 
请指导我在哪里犯错,以及如何纠正这一点。
  mainJSON.getJSONArray("source")返回一个JSONArray ,因此你可以删除new JSONArray. 
具有对象参数的JSONArray构造器期望它是一个Collection或Array(不是JSONArray)
尝试这个:
 JSONArray jsonMainArr = mainJSON.getJSONArray("source"); 
你的代码很好,只需要replace下面的代码:
 JSONArray jsonMainArr = new JSONArray(mainJSON.getJSONArray("source")); 
用这一行:
 JSONArray jsonMainArr = mainJSON.getJSONArray("source"); 
第2行应该是
 for (int i = 0; i < jsonMainArr.size(); i++) { // **line 2** 
对于第3行,我不得不这样做
  JSONObject childJSONObject = (JSONObject) new JSONParser().parse(jsonMainArr.get(i).toString()); 
 private static String readAll(Reader rd) throws IOException { StringBuilder sb = new StringBuilder(); int cp; while ((cp = rd.read()) != -1) { sb.append((char) cp); } return sb.toString(); } String jsonText = readAll(inputofyourjsonstream); JSONObject json = new JSONObject(jsonText); JSONArray arr = json.getJSONArray("sources"); 
你的arr看起来像:[{“id”:1001,“name”:“jhon”},{“id”:1002,“name”:“jhon”}]你可以使用:
 arr.getJSONObject(index) 
获取数组内的对象。
这可以回答你的问题:
 JSONArray msg1 = (JSONArray) json.get("source"); for(int i = 0; i < msg1.length(); i++){ String name = msg1.getString("name"); int age = msg1.getInt("age"); }