我正在使用GSON对JSON文件中的HashMap进行序列化和反序列化。一切似乎都正常,但是当我尝试访问地图元素时,出现此异常
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to org.itemalert.model.Alert
这是我从文件中读取的JSON字符串序列化和反序列化HashMap的方式
public static <K, V> String serializeMap(HashMap map) {
return getGson().toJson(map, new TypeToken<Map<K, V>>(){}.getType());
}
public static <K, V> HashMap<K, V> deserializeMap(String json) {
return new GsonBuilder().create().fromJson(json, new TypeToken<Map<K, V>>(){}.getType());
}
这是我要读取的json文件
{
"minecraft:diamond_pickaxe": {
"ENABLED": true,
"DURABILITY": 100,
"TYPE": "SOUND"
},
"minecraft:iron_sword": {
"ENABLED": true,
"DURABILITY": 1,
"TYPE": "HOTBAR"
},
"minecraft:diamond_sword": {
"ENABLED": true,
"DURABILITY": 150,
"TYPE": "CHAT"
}
}
我在这里想念什么?
您已经看过此页面了吗?https://www.baeldung.com/gson-json-to-map在那里您可以找到多种将json字符串转换为Map的可能性。并且如果那也不起作用,则使json字符串适合一行。我曾经遇到过类似的问题,可以通过执行此操作来解决。