• 使用gson将复杂的树型结构转Json遇到的问题,写入文件为空


    某个项目需要用到一个较为复杂的数据结构。定义成一个树型链表。

    public class TreeNode {
       private String name;
        public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPartType() {
        return partType;
    }
    public void setPartType(String partType) {
        this.partType = partType;
    }
    public List getChildren() {
        return children;
    }
    public void setChildren(List children) {
        this.children = children;
    }
        private String partType;
       private List children;
        public TreeNode(String name,String partType)
        {
            this.name=name;
            this.partType=partType;
            this.children=new ArrayList();
            
        }
        @Override
        public String toString() {
            return "TreeNode [name=" + name + ", partType=" + partType + ", children=" + children + "]";
        }
    }
    创建一个存人Tree Node类的List,原本打算直接将此转成json文件保存,以便以后恢复成list。结果转换出错,定义一个类。将此放进去:

    public class TreeNodeList {
        private ArrayList list;
        public  void setList(ArrayList list) {
            this.list = list;
        }   //不能少
        public ArrayList getList() {
            return list;
        }   //不能少
        public  TreeNodeList(ArrayList l)
        {
             list=l;
        }
        
        public TreeNodeList()
        {}     //不能少

    }
    然后再转,再写就ok了。注意,注释了“不能少”的是所有属性都要提供get和set方法,还要提供无参构造器。否则转不成功。

    多谢杨同学!!!

    附简单写入的代码,希望帮到遇到同样问题的人

       public static void writeJson(String jsonFilePath,ArrayList treeNodeList)
        {
             Gson gson=new Gson();
             TreeNodeList tnList=new TreeNodeList(treeNodeList);
             
                String result= gson.toJson(tnList);
               
                try {
                    FileWriter writer=new FileWriter(jsonFilePath);
                    writer.write(result);
                    writer.flush();
                    writer.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
              
        }

  • 相关阅读:
    对比不同测量矩阵的重构概率
    浅谈产业园区规划的意义、分类及功能!
    Vulhub靶场-KIOPTRIX: LEVEL 1.1
    八年测开经验面试28K公司后,吐血整理出高频面试题和答案
    简述Java21新特性
    T-SQL——关于数据合并(Merge)
    8086寄存器和常用指令缩写还原
    基于Jsp+Servlet+MySql的汉服网站的设计与实现-源码+毕业论文
    猿创征文|Redis新增数据类型
    理解Java中的死锁(Deadlock)及其示例
  • 原文地址:https://blog.csdn.net/serena_0916/article/details/134062984