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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据库设计概念结构设计_数据库设计典型实例

    数据库设计概念结构设计_数据库设计典型实例文章目录数据库设计概念设计结构概念结构设计ER模型的基本元素实体/实体集属性区别实体和属性联系二元联系的关系1:11:nm:n一元联系1:11:nm:n三元联系采用ER模型的概念设计设计局部ER模型例题设计全局ER模型全局ER模型的优化数据库设计数据库设计:构造最优的数据模型,建立数据库及其应用系统的过程数据库设计的好坏非常重要概念设计结构概念设计的目标是产生反映用户需求的数据库概念结构,即概念模型概念模型具有硬件独立、软件独立的特点处于一个桥梁作用概念设计的主要步骤

    2022年10月12日
    4
  • java finalize逃脱_java finalize方法详解[通俗易懂]

    java finalize逃脱_java finalize方法详解[通俗易懂]1.finalize的作用finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。finalize()与C++中的析构函数不是对应的。C++中的析构函数调用的时机是确定的(对象离开作用域或delete掉),但Java中的finalize的调用具有不确定性不建议用finalize方法完成“非内存资源”的清理工作,但建议用于:①…

    2022年9月19日
    2
  • pycharm安装matplotlib_深度学习小白篇一:Anaconda的安装和配置

    pycharm安装matplotlib_深度学习小白篇一:Anaconda的安装和配置一、前言大家知道,深度学习需要使用Python来做开发,所以,想要进入深度学习的战场,我们就必须要先要有python的开发环境作为武器,否则只能干看,而无从下手。子曰:“工欲善其事,必先利其器。”,我们最直接的武器就是编译Python程序的开发环境,一般情况下,我们选择在Python官网下载对应版本的Python然后用记事本编写,再在终端进行编译运行即可。但是对于我这样懒的小白,我喜欢装一些方便的…

    2022年8月28日
    5
  • SSRF漏洞讲解

    SSRF漏洞讲解SSRF漏洞讲解一、初识SSRF漏洞1.定义2.产生原理3.会导致的危害4.常见产生SSRF的地方5.常见缺失函数二、SSRF漏洞利用1.函数(1)file_get_contents(2)fsockopen()(3)curl_exec()2.协议(1)file协议(2)http协议(3)dict协议(4)gopher协议三、绕过1.绕过方式(1)检查IP是否为内网IP(2)Host获取与DNS绕过(3)通过各种协议(4)利用URL解析器滥用问题四、修复修复方案五、小结一、初识SSRF漏洞1.定义

    2022年6月25日
    30
  • springboot启动监听线程_Springboot启动流程

    springboot启动监听线程_Springboot启动流程SpringBoot提供了CommandLineRunner、ApplicationRunner两个监听接口,通过这两个接口可以在应用启动时做特殊处理。使用两者的好处在于,可以方便的使用应用启动参数,根据参数不同做不同的初始化操作。自定义启动监听由程序实现,并且标识@Component注解,交于IOC管理。在SpringBoot启动成功后就会执行实现类的回调。示例:第一步: 自定义CommandLineRunner:@ComponentpublicclassCommandLineStartu

    2025年9月23日
    3
  • jxl.jar下载

    jxl.jar下载jxl.jar给java提供了简单操作Excel的方法:链接:https://pan.baidu.com/s/17HXj_w8E2nM8iIssf2Bmhg提取码:l6t5

    2022年7月26日
    6

发表回复

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

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