最近发现了一个问题,通过查看用户的活跃度发现了奇怪的事情,有的用户访问某一个接口没有问题,而一些奇葩用户访问这一接口就是不成功,经过查看,原来是Android系统4.4以下map转换json的时候出现了问题,具体是什么了,下面我们来分析分析。
第一,利用”org.json.JSONObject”下的JsonObject 时,4.4以下的系统出现“=”的问题。比如:
Map<String, Object> map = new HashMap<>();
map.put("name", "张山");
map.put("age", 23);
Map<String, Object> mapFav = new HashMap<>();
mapFav.put("fav", "音乐");
mapFav.put("work", "工程师");
map.put("other", mapFav);
JSONObject json =new JSONObject(map);
运行之后的结果是;
{
"name": "张山",
"age": 23,
"other": "{work=工程师, fav=音乐}"
}
这不是坑人嘛。好了出现这种问题,我们肯定要解决的。
解决办法:
第一:换jar包,利用“net.sf.json.JSONObject”下的JsonObject。看看效果。
Map<String, Object> map = new HashMap<>();
map.put("name", "张山");
map.put("age", 23);
Map<String, Object> mapFav = new HashMap<>();
mapFav.put("fav", "音乐");
mapFav.put("work", "工程师");
map.put("other", mapFav);
JSONObject json = JSONObject.fromObject(map);
看看运行的结果:
{
"name": "张山",
"age": 23,
"other": {
"work": "工程师",
"fav": "音乐"
}
}
什么?下载地址哪里,不知道,看下面,使劲点击,点下面链接。
用到的jar 包,拷贝在libs文件下即可,
jar包下载
第二:利用Gson转化
Gson转化几行代码解决。
public static <T> String mapToJson(Map<String, T> map) {
Gson gson = new Gson();
String jsonStr = gson.toJson(map);
return jsonStr;
}
这个小问题,完美的解决了。