序列化对象应该用 String jsonStr = com.alibaba.fastjson.JSONObject.toJSONString( map );
和 com.alibaba.fastjson.JSONObject.parseObject( jsonStr, Map.class );
不要用 String string = map.toString(),再将这样的 string 转成 map 的方法。
-----------------------------------------------------
可是如果非要用 str = map.toString(),再将这个 str 转成 map 这种写法,就得自己写一个方法:
/**
* 当 map 的 value 只是整数,没有别的类型时,将 map string 转成 map
*/
public static Map<String, Integer> mapStrToMap(String mapStr){
//
if(mapStr == null || mapStr.equals("")){
return null;
}
mapStr = mapStr.substring(1, mapStr.length() - 1);
String[] arr1 = mapStr.split(",");
Map<String, Integer> result = new HashMap<>();
for(String str : arr1){
String[] arrInner = str.split("=");
result.put(arrInner[0].trim(), Integer.parseInt(arrInner[1]));
}
return result;
}
调用
Map<String, Object> map = new HashMap<>();
map.put("key1", 123123 + "3");
map.put("key2", -1);
String str1 = map.toString();
try{
Map<String, Integer> result = mapStrToMap(str1);
System.out.println(result);
}catch(Exception e){
e.printStackTrace();
}
-----------------------------------------------------------------------
如果 map 的 value 是 Object,这样的字符串转成 map:
/**
* 将 mapStr 转成 Map<String, Object>
*/
public static Map<String, Object> mapStrToMapOfStrAndObject(String mapStr){
//
if(mapStr == null || mapStr.equals("")){
return null;
}
// 去掉首尾的 { 和 }
mapStr = mapStr.substring(1, mapStr.length() - 1);
String[] arr1 = mapStr.split(",");
Map<String, Object> result = new HashMap<>();
for(String str : arr1){
String[] arrInner = str.split("=");
result.put(arrInner[0].trim(), arrInner[1]);
}
return result;
}
调用:
Map<String, Object> map = new HashMap<>();
map.put("key1", 1231233);
map.put("key2", -1);
map.put("name", "Harry");
String str = map.toString();
try{
Map<String, Object> result = mapStrToMapOfStrAndObject(str);
System.out.println(result);
}catch(Exception e){
e.printStackTrace();
}