Json.Net6.0用法介紹
前言
ON( Object Notation) 是一種輕量級的資料交換格式。簡單地說,JSON 可以將 Script 物件中表示的一組資料轉換為字串,然後就可以在函式之間輕鬆地傳遞這個字串,或者在非同步應用程式中將字串從 Web 客戶機傳遞給伺服器端程式。這個字串看起來有點兒古怪,但是 JavaScript 很容易解釋它,而且 JSON 可以表示比"名稱 / 值對"更復雜的結構。例如,可以表示陣列和複雜的物件,而不僅僅是鍵和值的簡單列表。
它所具有的特性:
- 1、Flexible JSON serializer for converting between .NET objects and JSON ——靈活的JSON序列化器用於實現.NET物件與JSON的轉換
- 2、LINQ to JSON for manually reading and writing JSON ——LINQ to JSON用於手動讀寫Json
- 3、High performance,faster than .NET's built-in JSON serializers——高效能,比.NET內建的JSON序列化程式速度要更快
- 4、Writes indented,easy to read JSON ——縮排書寫,使得Json易讀
- 5、Convert JSON to and from XML——支援JSON 與 XML 兩種格式相互轉換
- 6、Supports .NET 2 .NET 3.5 .NET 4,Silverlight,Windows Phone and Windows 8——支援.NET2.NET3.5.NET4,Windows Phone和Windows 8
在.Net中內建了讀寫Json的物件就是 DataContractJsonSerializer
和 JavaScriptSerializer
這兩個。但是這個是在.Net 3.5之後才支援的。並且效能上並不優秀。
效能對比圖如下:
這是Json.Net 5與.NET內建物件的效能對比圖,而現在Json.Net的版本已經到達了Version 6.0.1 ,相信它會有更好的表現。JSON.NET是開源的,下載地址:http://json.codeplex.com/,這裡有完整的原始碼,當然也可以參考http://james.newtonking.com/這裡。
jb51下載地址:https://www.jb51.net/codes/571698.html
當然通過VS進入Nuget管理包也可以進行下載Json.Net的程式包
下面我們來簡單的通過例項進行初步瞭解JSON.NET。
- 1、序列化一個物件為json字串。
- 2、然後再將字串反序列化為物件。
- 3、JSON與XML之間的互轉。
- 4、……當然還有其他格式的轉換,我們暫時不進行舉例,後面的文章會對此進行比較詳細的描述。
Serialize aGrrGbmosyWn Object——序列化一個物件
首先定義一個實體類物件
public class Account { public string Email { get; set; } public bool Active { get; set; } public DateTime CreatedDate { get; set; } public IList<string> Roles { get; set; } }
例項化實體類,然後進行序列化為Json字串
Account account = new Account() { Email = "[email protected]",Active = true,CreatedDate = new DateTime(2014,3,27,DateTimeKind.Utc),Roles = new List<string>{"aehyok","Kris" } }; string json = JsonConvert.SerializeObject(account,Formatting.Indented);
得到的json字串結果為
{ "Emailhttp://www.cppcns.com": "[email protected]","Active": true,"CreatedDate": "2014-03-27T00:00:00Z","Roles": [ "aehyok","Kris" ] }
Deserialize an Object——反序列化一個物件
繼續使用上面的實體類
現在是先定義一個Json的字串,我們也可以將上面生成的Json字串進行簡單的修改,然後進行反序列化處理
string json = @"{ 'Email': '[email protected]','Active': true,'CreatedDate': '2014-03-27T00:00:00Z','Roles': [ 'aehyok','Kris' ] }"; Account account = JsonConvert.DeserializeObject<Account>(json);
通過除錯得到的資料為
Convert JSON to XML——將JSON轉換為XML
首先還是定義一個Json字串,然後對其進行轉換
string json = @"{ '@Id': 1,'Email': '[email protected]','CreatedDate': '2014-01-20T00:00:00Z','Roles': [ 'Kris','aehyok' ],'Team': { '@Id': 2,'Name': 'Software Developers','Description': 'Creators of fine software products and services.' } }"; XNode node = JsonConvert.DeserializeXNode(json,"Root");
轉換結果為
Convert XML to JSON——將XML轉換為JSON
現在就是需要先定義一個簡單的XML字串,然後對其進行轉換處理
string xml = @"<?xml version='1.0' standalone='no'?> <root> <www.cppcns.comperson id='1'> <name>aehyok</name> <url>http://www.google.com</url> </person> <person id='2'> <name>Kris</name> <url>http://www.baidu.com</url> </person> </root>"; XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); string json = JsonConvert.SerializeXmlNode(doc);
通過除錯得到的結果為
其他功能簡介
- 1、Linq to JSON是用來操作JSON物件的。可以用於快速查詢、修改、刪除和建立JSON物件。當JSON物件內容比較複雜,而我們僅僅需要其中的一小部分資料時,可以考慮使用Linq to JSON來讀取和修改部分的資料而非反序列化全部。
- 2、Json.Net不僅支援序列化和反序列化物件,還支援XML和JSON之間的轉換。它支援的資料型別與JSON之間的轉換,例如:DataSet、DataTable、Entity Framework和NHibernate、Collection、Dictionary、Dynamic等等,大部分的資料型別基本都支援。
- 3、JSON.NET支援BSON資料的序列化和反序列化。
BSON(Binary Serialized Document Format)是一種類json的一種二進位制形式的儲存格式,簡稱Binary JSON,它和JSON一樣,支援內嵌的文件物件和陣列物件,但是BSON有JSON沒有的一些資料型別,如Date和BinData型別。 - 4、JSON Schema 用於描述JSON資料的結構和型別。如同DTD與XML的關係。
- 暫時我瞭解了這麼多的功能。總之,它對於一些什麼為空處理、日期格式控制、忽略屬性轉換等等的一些配置處理,都做的非常不錯,有關詳細介紹會在後續學習之後,進行總結記錄介紹。
到此這篇關於Json.Net6.0用法介紹的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援我們。