object转json字符串时NULL值字段过滤及map、json互转后map类型问题_json.parseobject null 不转换-程序员宅基地

技术标签: json  hashmap  常见问题  

HashMap<String, Fbox> map_in = new HashMap<>();
HashMap<String, Map<String, Fbox>> map_out= new HashMap<>();

上面为object类型,Fbox是个自定义对象。

现在需要把map_out存储到redis里去,所以先转成json字符串再放到redis里去。

用的时候再拿出来,取出来时是json字符串,转成map类型。

之前用的是net.sf.json.JSONObject,转出来后没有问题,但是当用map.get("XXX")取值时,就报错,用起来很不方便。

这里推荐用com.alibaba.fastjson.JSONObject,非常方便

String jsonString =com.alibaba.fastjson.JSONObject.toJSONString(map_out);
jedis.hset("111", "111", jsonString );
String jsonString1 = jedis.hget("111", "111");
			
HashMap<String, Map<String, Fbox>> parseObject = com.alibaba.fastjson.JSONObject.parseObject(jsonString1, new com.alibaba.fastjson.TypeReference<HashMap<String, Map<String, Fbox>>>(){});
HashMap<String,Fbox> map2 = new HashMap<>();
map2 = (HashMap<String, Fbox>) parseObject.get("1111");
Fbox fbox= map4.get("1");


另外转换过程中发现实体类里为空的字段会默认值并体现在json字符串中

比如Integer、Double等类型会默认0。下面是转换后的字符串,name为null,也会体现在字符串中

{
  "1111": {
    "1": {
      "orderId": 0,
      "count": 0,
      "gname": "1aa",
      "changeTime": 0,
      "t": 111,
      "name": "",
      "id": "1",
      "time": 0,
      "value": 11,
      "boxId": "1111",
      "inService": false,
      "reback": "N",
      "status": 0
    },
    "2": {
      "orderId": 0,
      "count": 0,
      "gname": "2bb",
      "changeTime": 0,
      "t": 222,
      "name": "",
      "id": "2",
      "time": 0,
      "value": 22,
      "boxId": "1111",
      "inService": false,
      "reback": "N",
      "status": 0
    }
  }
}
网上百度了下,发现一种方式是写jsonConfig,不过感觉不方便。

这里介绍一种简单粗暴的方式

@JsonInclude(value=JsonInclude.Include.NON_NULL)

实体类文件头里加入上述,然后再测试下,就会发现null值字段都已经过滤了。当然如果实体类里字段类型为long这种,null的话那还是会默认为0,这是java规则决定的。

那是不是需要每个实体类都加入这个注解吗?有一个更方便的方法,写一个父类,然后所以实体类继承这个父类,在这个父类里加入注解,就可以了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/onepiecehan/article/details/77323672

智能推荐

lib静态库逆向分析_libtersafe-程序员宅基地

文章浏览阅读4.7k次,点赞3次,收藏16次。当我们要分析一个lib库里的代码时,首先需要判断这是一个静态库还是一个导入库。库类型判断lib文件其实是一个压缩文件。我们可以直接使用7z打开lib文件,以查看里面的内容。如果里面的内容是obj文件,表明是静态库。如果里面的内容是dll文件,表明是导入库。导入库里面是不包含代码的,代码包含在对应的dll文件中。从lib中提取obj静态库是一个或者多个obj文件的打包,这里有两个方法从中提取obj:Microsoft 库管理器 7z解压Microsoft 库管理器(li_libtersafe

Linux的网络适配器_linux 查询网络适配器-程序员宅基地

文章浏览阅读5.3k次,点赞3次,收藏3次。了解一下,省的脑壳痛 桥接模式对应的虚拟网络名称“VMnet0” 桥接模式下,虚拟机通过主机的网卡进行通信,若物理主机有多块网卡(有线的和无线网卡),应选择桥结哪块物理网卡桥接模式下,虚拟机和物理主机同等地位,可以通过物理主机的网卡访问外网(局域网),一个局域网的其他计算机可以访问虚拟机。为虚拟机设置一个与物理网卡在同个网段的IP,则虚拟机就可以与物理主机以及局域..._linux 查询网络适配器

【1+X Web前端等级考证 】 | Web前端开发中级理论 (附答案)_1+xweb前端开发中级-程序员宅基地

文章浏览阅读3.4w次,点赞77次,收藏438次。# 前言2020 12月 1+X Web 前端开发中级 模拟题大致就更这么多,我的重心不在这里,就不花太多时间在这里面了。但是,说说1+X Web前端开发等级考证这个证书,总有人跑到网上问:这个证书有没有用? 这个证书含金量高不高?# 关于考不考因为这个是工信部从2019年才开始实施试点的,目前还在各大院校试点中,就目前情况来看,知名度并不是很高,有没有用现在无法一锤定音,看它以后办的怎么样把,软考以前也是慢慢地才知名起来。能考就考吧,据所知,大部分学校报考,基本不用交什么报考费(小部分学校,个别除._1+xweb前端开发中级

Linux安装mysql8.0(官方教程!)-程序员宅基地

文章浏览阅读2.5w次,点赞46次,收藏345次。Linux安装mysql(官方教程!)_linux安装mysql8.0

win10微软账号登陆报错:0x80190001解决方案_微软账户登录0x8019001-程序员宅基地

文章浏览阅读3.5w次,点赞19次,收藏18次。win10微软账号登陆报错:0x80190001解决方案_微软账户登录0x8019001

从微软AzureDevOps看实施基于DevOps全流程软件交付-程序员宅基地

文章浏览阅读1.5k次。Azure DevOpsAzure DevOps 汇集人员、流程和技术,实现软件交付自动化,为用户提供持续的价值。借助 Azure DevOps 解决方案,帮助您全流程构建你的软件产品,它使流程和产品更可靠。Azure DevOps帮助你用敏捷工具计划项目;用Git管理你的代码;..._azure devops approve

随便推点

mysql数据库查看编码,mysql数据库修改编码_查看数据库编码-程序员宅基地

文章浏览阅读3.5k次,点赞2次,收藏7次。其中 `DEFAULT CHARSET` 和 `COLLATE` 分别指定了表的默认编码和排序规则。其中 `DEFAULT CHARACTER SET` 指定了数据库的默认编码。其中 `Collation` 列指定了字段的排序规则,这也是字段的默认编码。此命令将更改表的默认编码和排序规则。此命令将更改字段的编码和排序规则。此命令将更改数据库的默认编码。_查看数据库编码

机器学习(十八):Bagging和随机森林_bagging数据集-程序员宅基地

文章浏览阅读1.3k次,点赞7次,收藏24次。本文深入探讨了集成学习及其在随机森林中的应用。对集成学习的基本概念、优势以及为何它有效做了阐述。随机森林,作为一个集成学习方法,与Bagging有紧密联系,其核心思想和实现过程均在文中进行了说明。还详细展示了如何在Sklearn中利用随机森林进行建模,并对其关键参数进行了解读,希望能帮助大家更有效地运用随机森林进行数据建模。_bagging数据集

MFC 自定义消息(类向对话框类传递自定义消息)-程序员宅基地

文章浏览阅读383次。创建的对话框类为 CMFCTEST2Dlg在 MFCTEST2Dlg.h : 头文件 定义#define WM_MYMESSAGE (WM_USER + 100) //step 1....// 生成的消息映射函数 virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPA..._自定义消息发送到企业微信对话框怎么实现

Openstack 控制台开发体会_openstack console开发-程序员宅基地

文章浏览阅读2.4k次,点赞3次,收藏2次。这段时间进行openstack控制台界面的开发有2个多月,感觉学到了不少东西。1、前端 首先是前端的技术,之前只知道简单的html语法,对CSS,JS,JQUERY等一窍不通。年后,小组开发人手不是很够,果断转行去开发,记得刚开始,搞个练手的界面,搞了两天才实现。而且前提是别人写好的结构,拿过来修改使用。熟读唐诗三百首,不会做诗也会吟的境界。但是一旦碰到没有样例的界面,那就头疼了_openstack console开发

电流检测电路_ina180-程序员宅基地

文章浏览阅读4k次,点赞4次,收藏26次。INA180电流检测电路_ina180

CentOS 7下安装Kafka集群_centos7安装kafka集群-程序员宅基地

文章浏览阅读82次。您将看到之前发布的消息在终端中显示出来在这篇文章中,我们详细介绍了如何在CentOS 7上安装和配置Kafka集群。接下来,我们配置了Kafka集群的各个组件,包括设置节点的唯一标识符、指定监听主机和端口、设置日志文件存储路径以及连接到Zookeeper。最后,我们启动了Kafka集群中的每个节点,并进行了简单的测试来验证集群的功能。解压缩后,您将在当前目录下看到一个名为"kafka_2.13-2.8.0"的文件夹,其中包含Kafka的所有文件。现在,我们将启动Kafka集群中的每个节点。_centos7安装kafka集群

推荐文章

热门文章

相关标签