【发布时间】:2019-01-21 14:14:35
【问题描述】:
我有以下HashMapmap,包含ArrayListcontent,包含几个HashMaps:
{
key1=val1,
key2=val2,
// ...
content= [
{
keyAbc=val10,
keyDef=val11,
KeyGhi=val12,
},
{
keyAbc=val13,
keyDef=val14,
KeyGhi=val15
},
{
keyAbc=val16,
keyDef=val17,
KeyGhi=val18
}
],
key20=val20,
// ...
}
现在我需要获取所有键和值content。
- 进入 ArrayList
当我尝试时
for(int i=0; i<map.get("content").size(); i++){}
它说cannot find symbol,好像它不认识ArrayList。
但是,将其转换为 ArrayList 是可行的:
for(int i=0; i<((ArrayList)map.get("content")).size(); i++){}
- 进入 HashMap
所以在那个循环中我尝试:
// for(...){
for(Map.Entry<Object, Object> obj : (((ArrayList)map.get("content")).get(i)){}
}
出现如下错误:
for-each 不适用于表达式类型
必需:数组或 java.lang.Iterable
找到:对象
转换为 HashMap:
// for(...){
for(Map.Entry<Object, Object> obj : ((HashMap)(ArrayList)map.get("content")).get(i)){}
}
产生该错误:
不兼容的类型:ArrayList 无法转换为 HashMap
那么我怎样才能访问content的内容呢?
【问题讨论】:
-
您声明的类型有问题。除非您为对象使用适当的类,否则这些类型转换将是必要的。这是反序列化的 JSON 吗?
-
@ernest_k:是的。
-
@user1170330 你能发布json而不是json的jvm检查吗?