更改
JSONObject objects = getArray.getJSONArray(i);
至
JSONObject objects = getArray.getJSONObject(i);
或者
JSONObject objects = getArray.optJSONObject(i);
取决于您使用的是JSON到/来自Java的库。 (看起来getArray.length() - 1将为您工作。)
然后,要访问“对象” 2699982213855798272中的字符串元素,请按元素名称将其取出。
String a = objects.get("A");
如果需要getArray.length() - 1中的元素名称,则可以使用静态实用程序方法JSONObject.getNames(JSONObject)来完成。
String[] elementNames = JSONObject.getNames(objects);
“获取第一个元素的值和最后一个元素的值。”
如果“元素”是指数组中的组件,请注意第一个组件位于索引0,最后一个组件位于索引getArray.length() - 1。
我想遍历数组中的对象并获取其组件和值。 在我的示例中,第一个对象具有3个成分,scond具有5个成分,第三个具有4个成分。 我想遍历它们中的每一个并获取其组件名称和值。
以下代码正是这样做的。
import org.json.JSONArray;
import org.json.JSONObject;
public class Foo
{
public static void main(String[] args) throws Exception
{
String jsonInput = "{"JObjects":{"JArray1":[{"A":"a","B":"b","C":"c"},{"A":"a1","B":"b2","C":"c3","D":"d4","E":"e5"},{"A":"aa","B":"bb","C":"cc","D":"dd"}]}}";
// "I want to iterate though the objects in the array..."
JSONObject outerObject = new JSONObject(jsonInput);
JSONObject innerObject = outerObject.getJSONObject("JObjects");
JSONArray jsonArray = innerObject.getJSONArray("JArray1");
for (int i = 0, size = jsonArray.length(); i < size; i++)
{
JSONObject objectInArray = jsonArray.getJSONObject(i);
// "...and get thier component and thier value."
String[] elementNames = JSONObject.getNames(objectInArray);
System.out.printf("%d ELEMENTS IN CURRENT OBJECT:n", elementNames.length);
for (String elementName : elementNames)
{
String value = objectInArray.getString(elementName);
System.out.printf("name=%s, value=%sn", elementName, value);
}
System.out.println();
}
}
}
/*
OUTPUT:
3 ELEMENTS IN CURRENT OBJECT:
name=A, value=a
name=B, value=b
name=C, value=c
5 ELEMENTS IN CURRENT OBJECT:
name=D, value=d4
name=E, value=e5
name=A, value=a1
name=B, value=b2
name=C, value=c3
4 ELEMENTS IN CURRENT OBJECT:
name=D, value=dd
name=A, value=aa
name=B, value=bb
name=C, value=cc
*/