大家好,又见面了,我是你们的朋友全栈君。
最近发现了一个问题,通过查看用户的活跃度发现了奇怪的事情,有的用户访问某一个接口没有问题,而一些奇葩用户访问这一接口就是不成功,经过查看,原来是Android系统4.4以下map转换json的时候出现了问题,具体是什么了,下面我们来分析分析。 第一,利用”org.json.JSONObject”下的JsonObject 时,4.4以下的系统出现“=”的问题。比如:
代码语言:javascript复制 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);
运行之后的结果是;
代码语言:javascript复制{
"name": "张山",
"age": 23,
"other": "{work=工程师, fav=音乐}" }
这不是坑人嘛。好了出现这种问题,我们肯定要解决的。
解决办法:
第一:换jar包,利用“net.sf.json.JSONObject”下的JsonObject。看看效果。
代码语言:javascript复制 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);
看看运行的结果:
代码语言:javascript复制{
"name": "张山",
"age": 23,
"other": { "work": "工程师", "fav": "音乐" } }
什么?下载地址哪里,不知道,看下面,使劲点击,点下面链接。 用到的jar 包,拷贝在libs文件下即可,
jar包下载
第二:利用Gson转化 Gson转化几行代码解决。
代码语言:javascript复制public static <T> String mapToJson(Map<String, T> map) {
Gson gson = new Gson();
String jsonStr = gson.toJson(map);
return jsonStr;
}
这个小问题,完美的解决了。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151340.html原文链接:https://javaforall.cn