1. 程式人生 > >xml 與 json 在 Newtonsoft 中的相互轉換

xml 與 json 在 Newtonsoft 中的相互轉換

1.資料格式

我們平時經常用到的兩種資料格式就是 xml 與 json。這兩種格式的轉換也變成了一個需要了解的操作。

2. xml

XML(Extensible Markup Language)是一種用來編碼文件的標記語言,人和機器都能夠 快速理解XML文件的含義。它的其中一個目標就是能在網際網路上廣泛應用,現在XML已經 被廣泛地應用在各種應用、WEB服務和網站中。

3.Json

JSON(JavaScript Object Notation)是一種輕量級的資料格式,它以”name / value”的格式來傳輸資料物件,JSON的目的就是為了能替代XML。

4. 相互轉換

 現在我們用 Newtonsoft 來 實現一個閉環的轉換  object   ——> json ——> xml ——>json——> object
        var user = new Dictionary<string, object>
        {
            {"CompanyName","Epoint" },
            {"UserName","Ellis" },
            {"Address",new Dictionary<string,string>
                      {
                         {"Country","China"},
                         {"Province","JiangSu"},
                         {"City","SuZhou" }
                      }
            },
            {"PhoneNumber",new object[]
                      {
                          new Dictionary<string,string>
                          {
                              {"Type","Phone" },
                              {"Number","0512-58972850" }
                          },
                          new Dictionary<string,string>
                          {
                              {"Type","Fax" },
                              {"Number","0512-58975860" }
                          }
                      }
            }
        };

        //object 轉 json
        string json = JsonConvert.SerializeObject(user);

        //json 轉xml 
        string xml = JsonConvert.DeserializeXNode(json, "Root", true).ToString();

        //xml 轉json
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(xml);
        string jsontext = JsonConvert.SerializeXmlNode(doc);

        //json轉object
        dynamic anotnerUser = JsonConvert.DeserializeObject<dynamic>(jsontext);
        string anotherJson = JsonConvert.SerializeObject(anotnerUser);

5.各自特點

從上面的兩個例子中我們可以看到,由於合理地利用了程式碼縮排和空格,JSON比XML可讀性更強一些,另外,JSON沒有利用全標記的結構,所以程式碼看起來更加緊湊,佔用的空間也少。另一方面,XML依然被開發者廣泛地使用著,XML也有很多自己的優勢,比如:XML有更多的文件和開發工具,另外一個比JSON更大的優勢是XML有一個 XML schema 來描述XML結構化資訊,它能夠詳細描述XML文件的資訊,也可以進行資料的驗證。