我使用的org.json.simple库来构建JSONArray的JSONObject。所以我的结构看起来像
c= [
{
"name":"test",
"age":1
},
{
"name":"test",
"age":1
}
]
Run Code Online (Sandbox Code Playgroud)
为了在java中迭代数组,我试过
for (int i = 0; i < c.size(); i++) {
JSONObject obj = (JSONObject) c.get(i);
System.out.println(obj.get("name"));
}
Run Code Online (Sandbox Code Playgroud)
它打印了null,但是当尝试打印 时obj.toString,它会按预期打印 JSON 字符串。
我正在使用org.json.simplejar,所以不能使用定义的方法org.json.JSONArray或org.json.JSONObject.
有什么想法可以用它们的键从对象中获取值吗?
您的代码绝对正确,它适用于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"));
}
}
}
Run Code Online (Sandbox Code Playgroud)
它输出:
test
test
Run Code Online (Sandbox Code Playgroud)
检查输入JSONArray是如何创建的。可能里面有什么不同的东西。例如,键名中可能有不可打印的字符,因此在使用时看不到它c.toString(),但会obj.get("name")失败。