FastJson把json串转为JSONObject时,怎么保留值为null的字段

yjclsx 2017-06-05 02:28:20
如题,FastJson用的不熟,下面是一段代码,resultStr是json字符串,里面含有为null的字段,转换成JSONObject之后就没那些为null的字段了,请问怎么保留下来?
JSONObject jsonObject = JSON.parseObject(resultStr);
我这是没有转换为封装好的class对象,因为resultStr里的结构是不确定的,所以都是使用JSONObject 来操作的!
说白了,就是要转换为JSONObject 时怎么保留null字段,求大神帮忙看看!
...全文
19728 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
一般的俗 2021-05-08
  • 打赏
  • 举报
回复
推荐使用google的Gson,很多数据处理用起来比fastJson方便
weixin_53451551 2021-05-07
  • 打赏
  • 举报
回复 15
说resultJson.toJSONString(SerializerFeature.WriteMapNullValue) 方法的 都是 脑残,从一个String 变成另一个String 有毛用啊?
qq_33192879 2020-04-28
  • 打赏
  • 举报
回复
在json转换中,多数都是按照默认的序列化方式进行的,如果需要特殊处理,可以在转换中使用SerializerFeature。例如:resultJson.toJSONString(SerializerFeature.WriteMapNullValue)
m0_38079813 2019-05-09
  • 打赏
  • 举报
回复
使用com.alibaba.druid.support.json.JSONUtils.toJSONString(Object),先将对象装换成字符串,是保留null值的,然后想怎么用怎么用
hi-face 2018-11-05
  • 打赏
  • 举报
回复
hude_on_bush 2018-11-02
  • 打赏
  • 举报
回复 1
cn.hutool.json.JSONObject 用这个来做解析 String string = jedisPoolUtil.get(split); JSONObject Object = JSONUtil.parseObj(string); Object.remove("clientIP"); return Result.Return(200, 1,JSONUtil.toJsonStr(Object)); Result类中这样就可以了 public static String Return(int code, int total, String rst) { String str="{\"CODE\":"+code+",\"TOTAL\":"+total+",\"RST\":"+rst+"}"; return str; } 这样前台就可以拿到Json字符串!
jjpno2 2018-09-10
  • 打赏
  • 举报
回复
判断一下,为null 就 赋成 “”
CarterQi 2018-08-30
  • 打赏
  • 举报
回复
判断一下,为null 就 赋成 “”
yamaxifeng_132 2018-06-04
  • 打赏
  • 举报
回复
楼上的方式不是很好,因子我要先解析第一层,拿到value值在解析第二层。。。第一次解析NULL值属性都已经过滤掉了,后面的解析就没有任何意义了。。。 我这边的处理方式是:把字段串的null替换成了某个特殊字符,这样他就不是NULL值了,就可以全部解析了。 方法虽然简单暴力,但这个也能解决问题,坐等有更好的实现方式。
墨笙弘一 2017-12-12
  • 打赏
  • 举报
回复
引用 7 楼 yjclsx 的回复:
6楼的解决方式,对于只有一层的json是有用的,但是如果有多层的话就不行了,比如有这么一个json字符串: {"k1":1,"k2":2,"k3":null,"k4":{"k41":null,"k42":42},"k5":5} 用上面的方式转换后的map结果是: {k1=1, k2=2, k3=null, k4={"k42":42}, k5=5} 第一层中的k3会保留,第二层里的k41还是被抹除了。
你可以分层啊 每层取出来都用那个方法解析
yjclsx 2017-12-12
  • 打赏
  • 举报
回复
6楼的解决方式,对于只有一层的json是有用的,但是如果有多层的话就不行了,比如有这么一个json字符串: {"k1":1,"k2":2,"k3":null,"k4":{"k41":null,"k42":42},"k5":5} 用上面的方式转换后的map结果是: {k1=1, k2=2, k3=null, k4={"k42":42}, k5=5} 第一层中的k3会保留,第二层里的k41还是被抹除了。
  • 打赏
  • 举报
回复
如果单个解析请参照五楼,如果整个项目需要解析null,则需要在项目启动时初始化fastjson的Provider,添加SerializerFeature的策略为WriteMapNullValue
  • 打赏
  • 举报
回复 1
Map<String, Object> map = JSONObject.parseObject(respJson, new TypeReference<Map<String, Object>>() { }); 这样可以转化为一个有null值的map,这样就不用考虑值为null的key被抹除的问题了(太坑了!)
lsongiu86 2017-08-25
  • 打赏
  • 举报
回复
JSONObject.toJSONString(jsonMap,SerializerFeature.WriteMapNullValue);
人生设计师 2017-08-25
  • 打赏
  • 举报
回复
我也遇到了这个问题,请问楼主解决了吗
hello-friend 2017-08-10
  • 打赏
  • 举报
回复
1楼的说法不满足楼主的要求 我也遇到了这个问题,请问楼主解决了吗
长安塬上人 2017-07-10
  • 打赏
  • 举报
回复
还望明示! 我也遇到这个问题了!weex框架只认fastjson,,这个processExtra 怎么才能解决JSON.parse(strJson);这个方法过滤掉null字段?
HinanaiTenshi 2017-06-05
  • 打赏
  • 举报
回复
parseObject方法有一个实现允许传一个ParseProcess接口的实现作为参数,这个接口有一个子接口叫ExtraProcessor,它定义了一个方法叫processExtra,有三个参数是object, key和value...... 剩下的你懂的

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧