【C#】解析C#中JSON.NET的使用
目錄結(jié)構(gòu):
contents structure [-]
?
JSON.NET對于.NET來說是一個非常高效的JSON框架。
1. JSON.NET的簡介
- 使用JSON.NET可以很方便的實(shí)現(xiàn).NET對象和JSON對象之間的轉(zhuǎn)化
- Linq to JSON可以手動讀寫JSON對象
- 高性能
- 可以使用JSON格式的數(shù)據(jù)讀寫XML文件
- 支持.NET2、.NET3.5、.NET4、.NET4.5、Silverlight、Windows Phone 、Windows 8 Store
?
在使用JSON.NET之前應(yīng)該先引入JSON相應(yīng)的EXE/DLL模塊,比如Newtonsoft.Json文件:
2. Serializing and Deserializing JSON(序列化和反序列化JSON)
使用JSONSerializer可以非常方便的實(shí)現(xiàn).NET對象與Json數(shù)據(jù)之間的轉(zhuǎn)化,JSONSerializer會把.NET對象的屬性名轉(zhuǎn)化為Json數(shù)據(jù)中的Key,把對象的屬性值轉(zhuǎn)化為Json數(shù)據(jù)中的value。
2.1? JsonConvert
//Convert to Json Product product = new Product();product.Name = "Apple";product.ExpiryDate = new DateTime(2008, 12, 28);product.Price = 3.99M;product.Sizes = new string[] { "Small", "Medium", "Large" };string output = JsonConvert.SerializeObject(product); //{ // "Name": "Apple", // "ExpiryDate": "2008-12-28T00:00:00", // "Price": 3.99, // "Sizes": [ // "Small", // "Medium", // "Large" // ] //}//Convert to Object Product deserializedProduct = JsonConvert.DeserializeObject<Product>(output);?
2.2 JsonSerializer
JsonSerializer可以直接通過流的方式來操作JSON數(shù)據(jù)。
將對象轉(zhuǎn)化為JSON格式的字符串,然后存儲到本地:
Product product = new Product(); product.ExpiryDate = new DateTime(2008, 12, 28);JsonSerializer serializer = new JsonSerializer(); serializer.Converters.Add(new JavaScriptDateTimeConverter());//指定轉(zhuǎn)化日期的格式 serializer.NullValueHandling = NullValueHandling.Ignore;//忽略空值using (StreamWriter sw = new StreamWriter(@"d:\json.txt")) using (JsonWriter writer = new JsonTextWriter(sw)) {serializer.Serialize(writer, product);// {"ExpiryDate":new Date(1230375600000),"Price":0} }將本地文件中的Json格式數(shù)據(jù),轉(zhuǎn)化為JObject對象:
JsonSerializer serializer = new JsonSerializer(); serializer.Converters.Add(new JavaScriptDateTimeConverter());//指定轉(zhuǎn)化日期的格式 serializer.NullValueHandling = NullValueHandling.Ignore;//忽略空值using (StreamReader sr = new StreamReader(@"d:\json.txt")) using (JsonReader reader= new JsonTextReader(sr)) {JObject jo =(JObject) serializer.Deserialize(reader); // { // "Name": null, // "ExpiryDate": "2008-12-28T00:00:00", // "Price": 0.0, // "Sizes": null //} }案例中的?serializer.NullValueHandling = NullValueHandling.Ignore 表示忽略空值,也就是為null值的屬性不轉(zhuǎn)化,需要注意Decimal的默認(rèn)值不是null,而是0。
3.LINQ to JSON
Linq to Json可以非常快速的從JObject對象中查詢數(shù)據(jù),以及創(chuàng)建JObject對象。
// create JObjectJObject o = JObject.Parse(@"{'CPU': 'Intel','Drives': ['DVD read/writer','500 gigabyte hard drive']}");
// query JObjectstring cpu = (string)o["CPU"]; // Intelstring firstDrive = (string)o["Drives"][0]; // DVD read/writer IList<string> allDrives = o["Drives"].Select(t => (string)t).ToList(); // DVD read/writer // 500 gigabyte hard drive
?
4.Converting XML(XML轉(zhuǎn)化)
4.1 Convert JSON to XML
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"); //<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>4.2 Convert XML to JSON
string xml = @"<?xml version='1.0' standalone='no'?><root><person id='1'><name>Alan</name><url>http://www.google.com</url></person><person id='2'><name>Louis</name><url>http://www.yahoo.com</url></person> </root>";XmlDocument doc = new XmlDocument(); doc.LoadXml(xml);string json = JsonConvert.SerializeXmlNode(doc);Console.WriteLine(json); // { // "?xml": { // "@version": "1.0", // "@standalone": "no" // }, // "root": { // "person": [ // { // "@id": "1", // "name": "Alan", // "url": "http://www.google.com" // }, // { // "@id": "2", // "name": "Louis", // "url": "http://www.yahoo.com" // } // ] // } // }?
5.原文鏈接
JSON.NET Document
轉(zhuǎn)載于:https://www.cnblogs.com/HDK2016/p/7955179.html
總結(jié)
以上是生活随笔為你收集整理的【C#】解析C#中JSON.NET的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webpack-dev-server 本
- 下一篇: c# 数组和集合