
本文转载自微信公众号「UP技术控」,行高性作者conan5566。框架转载本文请联系UP技术控公众号。行高性
在日常编程中经常会使用到Json来进行数据的框架交互好在.Net平台下有很多开源的Json库使得我们能够比较轻松快速的处理各种复杂的Json,其中Newtonsoft库
是行高性NET的流行高性能JSON框架
特性

工具
VS2010+
Newtonsoft库
从NuGet下载合适的Newtonsoft.Json库
1.在你需要引用Newtosoft.Json的站群服务器项目上,点击鼠标右键,框架管理Nuget程序包即可打开项目包管理器。行高性
2.在包管理器中输入关键字"Json"看到Newtosoft.Json这个库 点击右下加的框架箭头即可完成安装。

示例
1、行高性序列化JSON-序列化和反序列化JSON,框架序列化程序设置和序列化属性
public class Account { public string Email { get; set; } public bool Active { get; set; } public DateTime CreatedDate { get; set; } public IList<string> Roles { get; set; } } Account account = new Account { Email = "james@example.com",行高性 Active = true, CreatedDate = new DateTime(2013, 1, 20, 0, 0, 0, DateTimeKind.Utc), Roles = new List<string> { "User", "Admin" } }; string json = JsonConvert.SerializeObject(account, Formatting.Indented); // { // "Email": "james@example.com", // "Active": true, // "CreatedDate": "2013-01-20T00:00:00Z", // "Roles": [ // "User", // "Admin" // ] // } Console.WriteLine(json); 2、LINQ to JSON-解析,框架查询,行高性修改和编写JSON
JArray array = new JArray(); array.Add("Manual text"); array.Add(new DateTime(2000,框架 5, 23)); JObject o = new JObject(); o["MyArray"] = array; string json = o.ToString(); // { // "MyArray": [ // "Manual text", // "2000-05-23T00:00:00" // ] // } 3、云南idc服务商JSON模式-加载模式并验证JSON。行高性请注意,JSON Schema验证已移至其自己的程序包。有关 更多详细信息,请参见https://www.newtonsoft.com/jsonschema。
JObject o = JObject.Parse(@"{ Stores: [ Lambton Quay, Willis Street ], Manufacturers: [ { Name: Acme Co, Products: [ { Name: Anvil, Price: 50 } ] }, { Name: Contoso, Products: [ { Name: Elbow Grease, Price: 99.95 }, { Name: Headlight Fluid, Price: 4 } ] } ] }"); string name = (string)o.SelectToken("Manufacturers[0].Name"); Console.WriteLine(name); // Acme Co decimal productPrice = (decimal)o.SelectToken("Manufacturers[0].Products[0].Price"); Console.WriteLine(productPrice); // 50 string productName = (string)o.SelectToken("Manufacturers[1].Products[0].Name"); Console.WriteLine(productName); // Elbow Grease 4、转换XML-将JSON转换为XML和XML转换为JSON
string json = @"{ @Id: 1, Email: james@example.com, Active: true, CreatedDate: 2013-01-20T00:00:00Z, Roles: [ User, Admin ], Team: { @Id: 2, Name: Software Developers, Description: Creators of fine software products and services. } }"; XNode node = JsonConvert.DeserializeXNode(json, "Root"); Console.WriteLine(node.ToString()); // <Root Id="1"> // <Email>james@example.com</Email> // <Active>true</Active> // <CreatedDate>2013-01-20T00:00:00Z</CreatedDate> // <Roles>User</Roles> // <Roles>Admin</Roles> // <Team Id="2"> // <Name>Software Developers</Name> // <Description>Creators of fine software products and services.</Description> // </Team> // </Root> 5、BSON-序列化和反序列化BSON
public class Event { public string Name { get; set; } public DateTime StartDate { get; set; } } Event e = new Event { Name = "Movie Premiere", StartDate = new DateTime(2013, 1, 22, 20, 30, 0, DateTimeKind.Utc) }; MemoryStream ms = new MemoryStream(); using (BsonWriter writer = new BsonWriter(ms)) { JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(writer, e); } string data = Convert.ToBase64String(ms.ToArray()); Console.WriteLine(data); // MQAAAAJOYW1lAA8AAABNb3ZpZSBQcmVtaWVyZQAJU3RhcnREYXRlAED982M8AQAAAA== 6、读取和写入JSON-使用JsonTextReader读取JSON,使用JsonTextWriter写入JSON
string json = @"{ CPU: Intel, PSU: 500W, Drives: [ DVD read/writer /*(broken)*/, 500 gigabyte hard drive, 200 gigabyte hard drive ] }"; JsonTextReader reader = new JsonTextReader(new StringReader(json)); while (reader.Read()) { if (reader.Value != null) { Console.WriteLine("Token: { 0}, Value: { 1}", reader.TokenType, reader.Value); } else { Console.WriteLine("Token: { 0}", reader.TokenType); } } // Token: StartObject // Token: PropertyName, Value: CPU // Token: String, Value: Intel // Token: PropertyName, Value: PSU // Token: String, Value: 500W // Token: PropertyName, Value: Drives // Token: StartArray // Token: String, Value: DVD read/writer // Token: Comment, Value: (broken) // Token: String, Value: 500 gigabyte hard drive // Token: String, Value: 200 gigabyte hard drive // Token: EndArray // Token: EndObject 更多功能见https://github.com/JamesNK/Newtonsoft.Json
源码库