object转json字符串时NULL值字段过滤及map、json互转后map类型问题

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规则决定的。

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值