for (int i = 0; i < jsonArray.length(); i++){
System.out.println(jsonArray.getJSONObject(i));
System.out.println(jsonArray.getJSONObject(i).names());
}
将打印对,然后是单个对象,例如
{"key1":"a"}
["key1"]
{"key2":"b"}
["key2"]
{"key3":"c"}
["key3"]
{"key4":"d"}
["key4"]
...
{"keyn":"end"}
["keyn"]
我希望for循环能够分别获取每个对象的键和值的字符串解释。
我一直在搜索JSONObject API,但我似乎找不到那样做的方法。如果您知道密钥的名称,则可以轻松获取值的名称:
jsonObject.getString(whenYouKnowTheKeyName));
但是当我在数组中循环时,我假设我都不知道。我想要
key1
a
key2
b
key3
c
key4
d
...
作为输出。我试图从已经创建的JSON对象中读取,而不是创建一个新对象。
答案 0 :(得分:1)
假设jsonArray
中的对象始终只包含一个键,则以下内容应按照您的意愿打印每个对象中的键和值:
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Iterator<String> keys = jsonObject.keys();
String key = keys.next();
Object value = jsonObject.get(key);
System.out.println(key);
System.out.println(value);
}
但是,您可能希望通过在while (keys.hasNext())
迭代器循环中包装每个键和值来处理所有对象的所有键:
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Iterator<String> keys = jsonObject.keys();
while (keys.hasNext()) {
String key = keys.next();
Object value = jsonObject.get(key);
System.out.println(key);
System.out.println(value);
}
}
以您的示例为例,两种解决方案都具有相同的输出,但显然后者更灵活。