java无法将JSONObject添加到数组中
我正在使用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中遇到以下错误:
- 类型列表中的方法addAll(Collection)不适用于参数 (对象)
- 类型安全:未选中从对象到集合的强制转换
不知道这意味着什么以及如何解决
# 1 楼答案
正如您所写,json数据。get(i)是一个JSONObject,因此,不能用addAll添加它是正常的。 基本上,如果要添加列表,请使用
addAll
;如果要添加对象,请使用add
您可以使用
add
更改代码,使用for循环遍历jsonData。 另一方面,你可以简单地使用elementsList.addAll(jsonData)
# 2 楼答案
JSONArray#get(int)
的返回类型为Object
(因为它是从原始类型ArrayList
继承的)List#addAll(Collection)
需要类型为Collection
的参数。没有类型转换,类型Object
不能转换为Collection
然而,即使要强制转换
get
返回的值,底层值实际上是JSONObject
,并且在运行时会得到ClassCastException
你想要的是
因为
JSONArray
是ArrayList
的一个亚型,它是Collection
。您将收到一条关于jsonData
需要未经检查的转换的警告,但如果您的JSONArray
中确实有JSONObject
值,那么您应该会做得很好# 3 楼答案
试试看