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)}
 
发布了13 篇原创文章 · 获赞 0 · 访问量 193

猜你喜欢

转载自blog.csdn.net/qq_24687915/article/details/104950214