在 SharedPreferences 中保存 hashmap

Save hashmap in SharedPreferences

我需要将这个 hashmap 保存在 SharedPreferences 中我试图将它转换成 Json 但没有成功

 Map<String, String> userMap = new HashMap<String , String>() {{
                for(int i = 0; i < userList.size(); i++ ) {
                    String id= userList.get(i).getId();
                    String name = userList.get(i).getName();
                    put(id, name);

                }
            }};
            Gson gson = new Gson();
            String jsonString = gson.toJson(userMap);
            SessionManager sessionManager=new SessionManager(LoginActivity.this);
            sessionManager.saveMap(jsonString); 

即使 usermap 有数据,jsonString 也会返回 null 我真的需要这个来推进我的工作感谢任何帮助。

Gson 无法识别这样做的结果的匿名 class。

尝试在不使用 {{}} 结构的情况下初始化地图。 例如

Map<String, String> userMap = new HashMap<String , String>();

for(int i = 0; i < userList.size(); i++ ) {
    String id= userList.get(i).getId();
    String name = userList.get(i).getName();
    put(id, name);
}

Gson gson = new Gson();
String jsonString = gson.toJson(userMap);
SessionManager sessionManager=new SessionManager(LoginActivity.this);
sessionManager.saveMap(jsonString); 

要将此 json 转换回 Map<String, String>,您可以按照建议使用 TypeToken here

Gson gson = new Gson();
Type type = new TypeToken<Map<String, String>>() {}.getType();
Map<String, String> nameEmployeeMap = gson.fromJson(jsonString, type);