改变
JSONObject objects = getArray.getJSONArray(i);
自
JSONObject objects = getArray.getJSONObject(i);
或
JSONObject objects = getArray.optJSONObject(i);
取决于您使用的 JSON 到/来自 Java 库。(看起来对你有用。getJSONObject
然后,要访问“对象”中的字符串元素,请按元素名称将它们取出。JSONObject
String a = objects.get("A");
如果需要 中元素的名称,可以使用静态实用工具方法来执行此操作。JSONObject
JSONObject.getNames(JSONObject)
String[] elementNames = JSONObject.getNames(objects);
“获取第一个元素的值和最后一个元素的值。
如果“element”指的是数组中的组件,请注意,第一个组件位于索引 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=%s\n", 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
*/