• 使用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();
                }
              
        }

  • 相关阅读:
    轻松实现远程访问本地wamp服务器,无公网IP也不怕,「内网穿透」
    【数据结构】:栈的实现
    【机器学习可解释性】3.部分依赖图
    C++ 练气期之指针所指何处
    迅为RK3588开发板Linux安卓12瑞芯微ARM核心板人工智能工业AI主板
    「Python实用秘技13」Python中临时文件的妙用
    shell 字符串变量
    学习笔记二十四:K8S四层代理Service
    ren域名有价值吗?值不值得投资?ren域名的应用范围有哪些?
    TDengine可通过数据同步工具 DataX读写
  • 原文地址:https://blog.csdn.net/serena_0916/article/details/134062984