在 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);
我需要将这个 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);