net.sf.json.JSONException: Object is null

出现这个错误的原因是net.sf.json.JSONArray或JSONObject转换时,对象内包含另一个对象,而该被包含的对象为NULL,所以抛出异常。一种解决办法是将json字符串里的null去掉,但是觉得有点繁琐,之后看到可以用fastjson解决。

用fastjson处理之后的数据,其包含null的键值对是删去了的。

fastjson的remove方法替换了net.sf.json的discard方法,通过输出看到remove方法返回的好像是被移除的那个数据,但是将remove返回值放进组里的时候,确实原数据移除对应数据后的值。。。

  for (int i = 0; i < sectionsArray.size(); i++) {
                JSONObject jsonObject = (JSONObject) sectionsArray.get(i);
                System.out.println("jsonObject: " + jsonObject);
                System.out.println("111:" + jsonObject.remove("contents") );
//               JSONObject jsonObject2 = (JSONObject) jsonObject.remove("contents");
//                JSONObject jsonObject2 = (JSONObject) jsonObject.discard("contents");
                jsonObject.remove("contents");
//                jsonArray1.add(jsonObject2);
                jsonArray1.add(jsonObject);

            }

 

令我奇怪的是我的后台数据是这样的(用json在线解析工具比较好看(

[{"数据结构简介":[{"createUserId":37,"submitTime":1584147431000,"chapterId":1,"sectionsName":"数据结构简介","id":1,"keyWord":"数据结构"},{"createUserId":0,"chapterId":1,"sectionsName":"数据结构算法","id":2,"keyWord":"数据结构算法"},{"createUserId":0,"chapterId":1,"sectionsName":"数据结构渐进分析","id":3,"keyWord":"时间复杂度"}]},{"数组":[{"createUserId":0,"chapterId":2,"sectionsName":"指针","id":4,"keyWord":"指针"},{"createUserId":0,"chapterId":2,"sectionsName":"结构体","id":5,"keyWord":"结构体"}]},{"链表":[]},{"堆栈":[]},{"队列":[]},{"树":[]},{"图":[]},{"查找":[]},{"排序":[]}]

但是传到前台后,确是这样的,多了序号作为其key值,这样子前端处理时就麻烦了很多。不知道有什么解决办法。

  1. 0: {数据结构简介: Array(3)}
  2. 1: {数组: Array(2)}
  3. 2: {链表: Array(0)}
  4. 3: {堆栈: Array(0)}
  5. 4: {队列: Array(0)}
  6. 5: {树: Array(0)}
  7. 6: {图: Array(0)}
  8. 7: {查找: Array(0)}
  9. 8: {排序: Array(0)}

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值