Map转json遇到一些问题

Map转json遇到一些问题最近发现了一个问题,通过查看用户的活跃度发现了奇怪的事情,有的用户访问某一个接口没有问题,而一些奇葩用户访问这一接口就是不成功,经过查看,原来是Android系统4.4以下map转换json的时候出现了问题,具体是什么了,下面我们来分析分析。第一,利用”org.json.JSONObject”下的JsonObject时,4.4以下的系统出现“=”的问题。比如:Map

大家好,又见面了,我是你们的朋友全栈君。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151340.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • h5学习笔记:vuethink 配置

    h5学习笔记:vuethink 配置

    2021年10月13日
    68
  • xtrabackup部署以及使用

    xtrabackup部署以及使用

    2021年11月27日
    43
  • RabbitMQ流控-FLow Control

    RabbitMQ流控-FLow Control当Connection发布消息的速度太快,队列无法跟上(消费速度低于生产速度),RabbitMQ会降低Connection的速度,无需配置。流控的Connection可以在rabbitmqctl、管理UI和HTTPAPI响应中显示flow状态。这意味着连接每秒要经历多次阻塞和解除阻塞,以便将消息传入的速度保持在服务器其他部分(例如,将这些消息路由到的队列)能够处理的速度。一般来说,处于流…

    2022年5月27日
    87
  • 11asdsad「建议收藏」

    11asdsad「建议收藏」常用Linux命令修改目录,文件权限的命令如何获取一个本地服务器上可用的端口。说说常见的linux命令,linux查看内存的命令是什么?查看系统磁盘空间剩余情况的命令如何获取java进程的pid如何获取某个进程的网络端口号;如何实时打印日志如何统计某个字符串行数;用一行命令查看文件的最后五行。用一行命令输出正在运行的java进程。绝对路径,当前目录、上层目录,切换目录分别用什么命令?怎么清屏?怎么退出当前命令?目录创建,创建文件,复制文件分别用什么命令?查看文件内容有哪些命令

    2022年4月29日
    36
  • 引入js和css文件的总结

    1.用script标签引入javascript时,浏览器对于javascript的加载某些是并行的,某些是串行的,如IE8,Chorme2和firefox3都是串行加载的。2.charset编码也就是

    2021年12月20日
    48
  • 使用pycharm中全文搜索快捷键(整个项目搜索)[通俗易懂]

    使用pycharm中全文搜索快捷键(整个项目搜索)[通俗易懂]Ctrl+Shift+F或者在关闭所有的文件后在主页面,连续按两次shift 

    2022年8月28日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号