将实体类Bean转换为json对象的时候过滤null空值

本文介绍了一种使用FastJSON处理MongoDB实体类到JSON对象转换的方法,以避免因空值覆盖而导致的数据丢失。通过将实体类转换为JSON字符串,并进一步转换为JSON对象来过滤空值。

        在使用mongodb的时候经常会遇到需要把实体类转换成json对象去的情况,但是转换成的json对象中,除了已经向bean里添加过的属性,其余未赋值的属性却在json中依然显示为空!这就造成了在使用mongodb的修改的时候,会用null值覆盖原来的值。

       之前在网上看到过使用filter过滤属性的博客http://blog.youkuaiyun.com/u013239111/article/details/52006046;我试了一下,因为公司用的是alibaba的fast json 总是会报错,经过一番查找后发现了原来fast json自带的就有过滤空字符串的功能,但是需要先将bean对象转换成jsonString,在将jsonString转换成json对象就可以过滤掉空值了

代码如下:

 public void updateSkinBySkinId(MonspSkinConf monspSkinConf){
        //获取集合
        DBCollection collection = mongoService.getCollection(MongoKeys.DB_NAME, MongoKeys.MONSP_SKIN_CONF);
        //用来定位要修改的数据
        DBObject id=new BasicDBObject("skinId",monspSkinConf.getSkinId());
        //将传入的实体类转换成jsonString并过滤空值后再重新转换成json对象
        String jsonStr = com.alibaba.fastjson.JSONObject.toJSONString(monspSkinConf);

        com.alibaba.fastjson.JSONObject toJS = com.alibaba.fastjson.JSONObject.parseObject(jsonStr);

        //新的数据
        DBObject state=new BasicDBObject(toJS);
        //将新的数据加以操作符$set,
        DBObject condition=new BasicDBObject();
        condition.put("$set",state);
        collection.update(id,condition);
    }

当然如果你不想过滤空值的话,也可以这样:

String jsonStr = com.alibaba.fastjson.JSONObject.toJSONString(monspSkinConf,
SerializerFeature.WriteMapNullValue);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值