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


相关推荐

  • main(argc,argv)中参数含义_c语言int char

    main(argc,argv)中参数含义_c语言int char这篇文章主要介绍了C语言中intmain(intargc,char*argv[])的两个参数详解的相关资料,需要的朋友可以参考下:转载自:https://www.jb51.net/article/107168.htm        https://www.cnblogs.com/ruixingw/p/3705918.htmlC语言中intmain(inta…

    2025年6月3日
    0
  • 微信小程序显示富文本_微信小程序div

    微信小程序显示富文本_微信小程序divwxParse方法我踩雷了微信官方文档有个更为便捷的标签<rich-textnodes=”{{}}”></rich-text>

    2022年8月18日
    8
  • 图像处理的Dither和Banding「建议收藏」

    图像处理的Dither和Banding「建议收藏」由于前面的文章涉及到了这两个概念,而我又对图像处理一窍不通,所以专门写一篇文章来了解这两个概念。Colourbanding       banding是计算机图形中颜色表现不精确的一个问题。DitherDither(抖动)是一种故意造成的噪音用以随机化量化误差,阻止大幅度拉升图像时导致的像banding(色带)这样的问题.Dither概念常用在

    2022年10月13日
    0
  • 无人机拍360全景操作细节详解

    对于制作360全景的小伙伴来说,无人机航拍是其中最重要的一课,无人机所展示的360全景地图是其他任何拍摄手段都不能比拟的,所以无人机拍摄也深受人们的欢迎。制作360全景的第一步肯定是拍摄照片我们先把无人机飞到空中大概50-70米的位置,把无人机相机调整到水平视角开始拍摄,朝一个方向横向旋转水平拍摄,拍摄一圈8张图片,每张照片20%左右的重合度。第一圈拍摄完成之后把无人机慢慢下降几米,或者调…

    2022年4月8日
    156
  • linux系统目录介绍

    linux系统目录介绍

    2021年8月30日
    56
  • S3C2440移植uboot之支持NANDFLASH操作

    S3C2440移植uboot之支持NANDFLASH操作上一节我们移植了uboot,S3C2440移植uboot之支持NORFLASH。这节我们继续移植,支持NANDFLASH。之前由于nand部分报错,直接注释了 u-boot-2012.04.01\include\configs\smdk2440.h中的#defineCONFIG_CMD_NAND。现在我们去掉注释,重新编译。报错如下是我们没有定义CONFIG_S3C2410导致的可以…

    2022年6月3日
    30

发表回复

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

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