fastjson根据key去除某一项元素

数据如下所示:

   [{"chapterId":1,"sectionsName":"数据结构简介","id":1,"contents":"ssssss"},//这里为一个sections对象
   { "chapterId":1,"sectionsName":"数据结构算法","id":2,"contents":"ssssss"},
   {"chapterId":1,"sectionsName":"数据结构渐进分析","id":3,"contents":"ssssss"} ]

在数据库里取出的时候是以List<Sections>的形式取出的,list里放的是Sections对象,然后用转为json数组,(这部分网上有专门说明的)我在这里用的是fastJson,之前用的那个net.sf.json在向前台传数据的时候回报空指针异常,原因是json里有null值,而fastJson把null的项给删掉了。

List<Sections> sections = sectionsService.selectSectionsAll(chapter.getId());//获取章节下的所有小节
JSONArray sectionsArray = (JSONArray) JSONArray.toJSON(sections);//转为json数组
for (int i = 0; i < sectionsArray.size(); i++) {
    JSONObject jsonObject = (JSONObject) sectionsArray.get(i);//获得小节数组中的小节对象(json形式)
    System.out.println("jsonObject: " + jsonObject);
    jsonObject.remove("contents");
    //jsonArray1.add(jsonObject);//将处理后的小节对象放入新的json数组,其实原本的小节数组中已经改变。          
   //System.out.println("jsonObject Hash: " + jsonObject.hashCode());
   //System.out.println("sections Hash: " + sectionsArray.get(i).hashCode());//二者的哈希地址是一样的
}
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("第一章",sectionsArray );//将数据处理后放入一个新的json里,这里的sectionsArray已经是改变过的了

其实这里也是误打误撞,把sectionsArray写上去了,本来以为写错了但是结果对了。后来发现二者的哈希地址是一样的,不知道其它json工具也是这样的吗?

发布了13 篇原创文章 · 获赞 0 · 访问量 192

猜你喜欢

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