JsonFromTree 树状结构导出到JSON数据的工具

   若是有一个配置文件里存储一些简单的配置 json

    例如: x=1 c#

            y=2 数据结构

  那么大可直接存储在文件中读取到内存中的一张表中。 this

  但是存储一张树状结构数据,例如一个带有深层菜单项的数据结构如何存储到配置文件中呢?并且也很容易的就能加载进来? 若想直接加载到内存中就是一个树状结构的数据结构,那么我能想到的最简单的方法就是序列化一棵树,而序列化的对象,我选择的是json数据 JsonFromTree就是这样一个程序,可以编辑一颗树,为每一个节点添加各自属性而且导出成json文本数据。 spa

 逆序列化时的结构为 code

 

namespace TreeJsonGenerator
{
    public class NodeData
    {
        /// <summary>
        /// 子节点
        /// </summary>
        public List<NodeData> Items;
        /// <summary>
        /// 子节点属性值
        /// </summary>
        public Dictionary<String, String> key2value;

        /// <summary>
        /// 本节点的标识
        /// </summary>
        public String Name;
        public NodeData()
        {
            this.Items = new List<NodeData>();
            this.key2value=new Dictionary<string,string>();
        }
    }

    public class NodeDataCollection
    {
        public List<NodeData> Nodes;
        public NodeDataCollection()
        {
            this.Nodes = new List<NodeData>();
        }
    }
}

 NodeDataCollection为序列化对象,导出的文件在程序中只须要下面段代码就可直接逆序列化,前提是.NET版本为3.5以上,若想在.NET2.0中使用逆序列化程序集请参考 Newtonsoft.NET 对象

private NodeDataCollection load_from_file(String file)
        {
            System.IO.StreamReader reader = new StreamReader(file);
            var temp= Deserialize<NodeDataCollection>(reader.ReadToEnd());
            reader.Close();
            return temp;
        }



程序编辑界面以下所示 内存

 

导出成的JSON数据内容 源码

 

{
    "Nodes": [
        {
            "Items": [
                {
                    "Items": [
                        {
                            "Items": [],
                            "key2value": {
                                "pro": "3"
                            },
                            "Name": "节点3"
                        }
                    ],
                    "key2value": {
                        "属性值1": "我是值"
                    },
                    "Name": "子节点1"
                },
                {
                    "Items": [],
                    "key2value": {
                        "属性2": "我也是值"
                    },
                    "Name": "子节点2"
                }
            ],
            "key2value": {},
            "Name": "根节点1"
        },
        {
            "Items": [
                {
                    "Items": [],
                    "key2value": {
                        "属性值": "我是值"
                    },
                    "Name": "子节点1"
                }
            ],
            "key2value": {},
            "Name": "根节点2"
        }
    ]
}

  固然程序保存时存在一些瑕疵,就是保存时须要先本身新建一个  例如 test.json 的空文件,而后再选中覆盖就能存储了。 string

 源码地址 http://pan.baidu.com/s/1qWVKqRE

  可执行文件地址 http://pan.baidu.com/s/1qWRa8Fi

相关文章
相关标签/搜索