我正在使用org.json.simple
库来构建JSONArray
的{{1}}。所以我的结构看起来像
JSONObject
要在java中迭代数组,我试过
c= [
{
"name":"test",
"age":1
},
{
"name":"test",
"age":1
}
]
它打印for (int i = 0; i < c.size(); i++) {
JSONObject obj = (JSONObject) c.get(i);
System.out.println(obj.get("name"));
}
,但在尝试打印null
时,会按预期打印JSON字符串。
我使用的是obj.toString
jar,因此无法使用org.json.simple
或org.json.JSONArray
定义的方法。
有关从对象获取键值的任何想法吗?
答案 0 :(得分:3)
Your code is absolutely correct, it works fine with org.json.simple
:
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class JsonTest {
public static void main(String[] args) throws ParseException {
JSONArray c = (JSONArray) new JSONParser()
.parse("[ { \"name\":\"test\", \"age\":1 }, "
+ "{ \"name\":\"test\", \"age\":1 } ]");
for (int i = 0; i < c.size(); i++) {
JSONObject obj = (JSONObject) c.get(i);
System.out.println(obj.get("name"));
}
}
}
It outputs:
test
test
Check how input JSONArray
was created. It's possible that there's something different inside it. For example, it's possible that you have non-printable character in key name, so you don't see it when using c.toString()
, but obj.get("name")
fails.
答案 1 :(得分:2)
You can iterate over the JSONArray
elements using an Iterator
, like this:
//arr is your JSONArray here
Iterator<Object> iterator = arr.iterator();
while (iterator.hasNext()) {
Object obj = iterator.next();
if(obj instanceof JSONObject) {
System.out.println(obj.get("name"));
}
}
It uses org.json.simple.JSONObject
and org.json.simple.JSONArray
.
答案 2 :(得分:1)
使用以下代码片段来解析JsonArray。
for (int i = 0; i < jsonarray.length(); i++) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
String name = jsonobject.getString("name");
int age = jsonobject.getInt("age");
}
希望它有所帮助。