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

来源:互联网 发布:linux修改用户家目录 编辑:程序博客网 时间:2024/05/16 12:22

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

       之前在网上看到过使用filter过滤属性的博客http://blog.csdn.net/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);




2 0
原创粉丝点击