Map转json遇到一些问题

来源:互联网 发布:ssh无法连接linux 编辑:程序博客网 时间:2024/06/16 23:58

最近发现了一个问题,通过查看用户的活跃度发现了奇怪的事情,有的用户访问某一个接口没有问题,而一些奇葩用户访问这一接口就是不成功,经过查看,原来是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;    }

这个小问题,完美的解决了。