我正在使用 JSON simple解析 JSON 文件。当我这样做时,我得到一个 JSONArray
。但是当我尝试遍历它并获取它的 JSONObject
元素时,我得到了一个错误。
这是我的代码:
JSONArray jsonData = (JSONArray) jsonParser.parse(reader);
List<JSONObject> elementsList = new ArrayList<JSONObject>();
for (int i = 1; i < jsonData.size(); i++) {
elementsList.addAll(jsonData.get(i)); // Here jsonData.get(i) is a JSONObject
}
我在 Eclipse 中遇到以下错误:
- List 类型中的 addAll(Collection) 方法不适用于参数 (对象)
- 类型安全:未经检查的从对象到集合的转换
不确定这些是什么意思以及如何解决。
最佳答案
JSONArray#get(int)
的返回类型为 Object
(因为它是从原始类型 ArrayList
继承的)。 List#addAll(Collection)
需要一个 Collection
类型的参数。类型 Object
不能在没有类型转换的情况下转换为 Collection
。
但是,即使您要强制转换 get
返回的值,底层值实际上也是一个 JSONObject
并且您会得到一个 ClassCastException
在运行时。
你想要的是
elementsList.addAll(jsonData); // outside the loop
因为 JSONArray
是 ArrayList
的子类型,它是一个 Collection
。您会收到有关 jsonData
需要未经检查的转换的警告,但您应该假设您的 JSONArray
中确实有 JSONObject
值。
关于java - 无法将 JSONObjects 添加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30648600/