CacheUtilsLibrary icon indicating copy to clipboard operation
CacheUtilsLibrary copied to clipboard

Error when reading from cached HashMap

Open jaytj95 opened this issue 8 years ago • 1 comments

I'm getting a com.google.gson.internal.LinkedTreeMap cannot be cast to <CustomClass> error when reading a HashMap from cache.

Writing to file:

Map<String, Bus> buses = new HashMap<>();
//after adding data
CacheUtils.writeDataMapFile(CACHE_NAME, buses);

Reading from file:

buses = CacheUtils.readDataMapFile(CACHE_NAME);
Bus b = buses.get("Route 1"); //Error here

jaytj95 avatar Mar 15 '17 15:03 jaytj95

Found a solution to my problem. Ended up storing the hashmap as a JSON string and then doing the Type conversion myself.

CacheUtils.writeFile(CACHE_NAME, new Gson().toJson(buses));
//.......
String busesStr = CacheUtils.readFile(CACHE_NAME);
Type type = new TypeToken<HashMap<String, Bus>>(){}.getType();
HashMap<String, Bus> buses = new Gson().fromJson(busesStr, type);

jaytj95 avatar Mar 15 '17 17:03 jaytj95