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

相關文章
相關標籤/搜索