Java 如果是数组对象,如何读取特定的映射键值
我有下面的地图结构Java 如果是数组对象,如何读取特定的映射键值,java,Java,我有下面的地图结构 {empId=1234, empName=Mike, CDetails=[{"collegeName":"Peters Stanford","collegeLoc":"UK","collegeLoc":"UK"}]} 我需要从上面的地图中读取值collegeLoc 我试过这种方法,它很有效,但是有更好的方法吗 myMap.entrySet().stream().filter(map -> map.getKey().equals("CDetails")).for
{empId=1234, empName=Mike, CDetails=[{"collegeName":"Peters Stanford","collegeLoc":"UK","collegeLoc":"UK"}]}
我需要从上面的地图中读取值collegeLoc
我试过这种方法,它很有效,但是有更好的方法吗
myMap.entrySet().stream().filter(map -> map.getKey().equals("CDetails")).forEach(e -> {
List<Object> objsList = (List<Object>) e.getValue();
for(int i=0;i<objsList.size();i++)
{
HashMap<String,String> ltr = (HashMap<String, String>) objsList.get(i);
System.out.println(ltr.get("collegeLoc"));
}
});
myMap.entrySet().stream().filter(map->map.getKey().equals(“CDetails”).forEach(e->{
List objsList=(List)e.getValue();
for(int i=0;iCDetails
是一个列表
,而不是映射
试试这个:
empMap.entrySet().stream()
.map(map -> map.get("CDetails"))
.filter(Objects::nonNull)
.flatMap(List::stream)
.map(element -> ((Map)element).get("collegeLoc"))
.filter(Objects::nonNull)
.forEach(System.out::println);
映射到CDetails
的值是一个列表,但您正在将其强制转换为HashMap
。您必须先将其强制转换为列表,然后循环遍历该列表的元素(并将每个元素强制转换为一个映射)@Lavanya我更正了几个错误,但您没有提供足够的详细信息让我做更多的工作。