web-dev-qa-db-ja.com

例外Java.util.LinkedHashMapをJava.util.Listにキャストできません

次のコードを回避しているときに、以下の例外が発生しました。

List<Map<String, Object>> obj = mapper.readValue(result.getBody(), new TypeReference<Map<String,Object>>(){});

for (Map<String, Object> map : obj) {
    for(Map.Entry<String, Object> entry : map.entrySet()){
        System.out.println("Key : "+entry.getKey()+" Value is: "+entry.getValue());
    }
}

StacktraceJava.lang.ClassCastException: Java.util.LinkedHashMap cannot be cast to Java.util.List

8
Vamsi

これを試してください:MapオブジェクトをListではなくList.soに保存しようとしていますか?.

の代わりに:

List<Map<String, Object>> obj = mapper.readValue(result.getBody(),
new TypeReference<Map<String,Object>>(){});

これを使って :

List<Map<String, Object>> obj = mapper.readValue(result.getBody(), 
new TypeReference<List<Map<String,Object>>>(){});

デモ例 このリンク

1
Benjamin

List of Mapの代わりにMapのみを使用する必要があります。

 Map<String, Object>> object = mapper.readValue(result.getBody(), new TypeReference<Map<String,Object>>(){});
 for(Map.Entry<String, Object> entry : object.entrySet()){
    System.out.println("Key : "+entry.getKey()+" Value is:"+entry.getValue());
}
1
Lilia