Json.net 常用使用小结(推荐)
using System; using System.Linq; using System.Collections.Generic; namespace microstore { public interface IPerson { string FirstName { get; set; } string LastName { get; set; } DateTime BirthDate { get; set; } } public class Employee : IPerson { public string FirstName { get; set; } public string LastName { get; set; } public DateTime BirthDate { get; set; } public string Department { get; set; } public string JobTitle { get; set; } } public class PersonConverter : Newtonsoft.Json.Converters.CustomCreationConverter<IPerson> { //重写abstract class CustomCreationConverter<T>的Create方法 public override IPerson Create(Type objectType) { return new Employee(); } } public partial class testjson : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //if (!IsPostBack) // TestJson(); } #region 序列化 public string TestJsonSerialize() { Product product = new Product(); product.Name = \"Apple\"; product.Expiry = DateTime.Now.AddDays(3).ToString(\"yyyy-MM-dd hh:mm:ss\"); product.Price = 3.99M; //product.Sizes = new string[] { \"Small\", \"Medium\", \"Large\" }; //string json = Newtonsoft.Json.JsonConvert.SerializeObject(product); //没有缩进输出 string json = Newtonsoft.Json.JsonConvert.SerializeObject(product, Newtonsoft.Json.Formatting.Indented); //string json = Newtonsoft.Json.JsonConvert.SerializeObject( // product, // Newtonsoft.Json.Formatting.Indented, // new Newtonsoft.Json.JsonSerializerSettings { NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore } //); return string.Format(\"<p>{0}</p>\", json); } public string TestListJsonSerialize() { Product product = new Product(); product.Name = \"Apple\"; product.Expiry = DateTime.Now.AddDays(3).ToString(\"yyyy-MM-dd hh:mm:ss\"); product.Price = 3.99M; product.Sizes = new string[] { \"Small\", \"Medium\", \"Large\" }; List<Product> plist = new List<Product>(); plist.Add(product); plist.Add(product); string json = Newtonsoft.Json.JsonConvert.SerializeObject(plist, Newtonsoft.Json.Formatting.Indented); return string.Format(\"<p>{0}</p>\", json); } #endregion #region 反序列化 public string TestJsonDeserialize() { string strjson = \"{\\\"Name\\\":\\\"Apple\\\",\\\"Expiry\\\":\\\"2014-05-03 10:20:59\\\",\\\"Price\\\":3.99,\\\"Sizes\\\":[\\\"Small\\\",\\\"Medium\\\",\\\"Large\\\"]}\"; Product p = Newtonsoft.Json.JsonConvert.DeserializeObject<Product>(strjson); string template = @\"<p><ul> <li>{0}</li> <li>{1}</li> <li>{2}</li> <li>{3}</li> </ul></p>\"; return string.Format(template, p.Name, p.Expiry, p.Price.ToString(), string.Join(\",\", p.Sizes)); } public string TestListJsonDeserialize() { string strjson = \"{\\\"Name\\\":\\\"Apple\\\",\\\"Expiry\\\":\\\"2014-05-03 10:20:59\\\",\\\"Price\\\":3.99,\\\"Sizes\\\":[\\\"Small\\\",\\\"Medium\\\",\\\"Large\\\"]}\"; List<Product> plist = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Product>>(string.Format(\"[{0},{1}]\", strjson, strjson)); string template = @\"<p><ul> <li>{0}</li> <li>{1}</li> <li>{2}</li> <li>{3}</li> </ul></p>\"; System.Text.StringBuilder strb = new System.Text.StringBuilder(); plist.ForEach(x => strb.AppendLine( string.Format(template, x.Name, x.Expiry, x.Price.ToString(), string.Join(\",\", x.Sizes)) ) ); return strb.ToString(); } #endregion #region 自定义反序列化 public string TestListCustomDeserialize() { string strJson = \"[ { \\\"FirstName\\\": \\\"Maurice\\\", \\\"LastName\\\": \\\"Moss\\\", \\\"BirthDate\\\": \\\"1981-03-08T00:00Z\\\", \\\"Department\\\": \\\"IT\\\", \\\"JobTitle\\\": \\\"Support\\\" }, { \\\"FirstName\\\": \\\"Jen\\\", \\\"LastName\\\": \\\"Barber\\\", \\\"BirthDate\\\": \\\"1985-12-10T00:00Z\\\", \\\"Department\\\": \\\"IT\\\", \\\"JobTitle\\\": \\\"Manager\\\" } ] \"; List<IPerson> people = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IPerson>>(strJson, new PersonConverter()); IPerson person = people[0]; string template = @\"<p><ul> <li>当前List<IPerson>[x]对象类型:{0}</li> <li>FirstName:{1}</li> <li>LastName:{2}</li> <li>BirthDate:{3}</li> <li>Department:{4}</li> <li>JobTitle:{5}</li> </ul></p>\"; System.Text.StringBuilder strb = new System.Text.StringBuilder(); people.ForEach(x => strb.AppendLine( string.Format( template, person.GetType().ToString(), x.FirstName, x.LastName, x.BirthDate.ToString(), ((Employee)x).Department, ((Employee)x).JobTitle ) ) ); return strb.ToString(); } #endregion #region 反序列化成Dictionary public string TestDeserialize2Dic() { //string json = @\"{\"\"key1\"\":\"\"zhangsan\"\",\"\"key2\"\":\"\"lisi\"\"}\"; //string json = \"{\\\"key1\\\":\\\"zhangsan\\\",\\\"key2\\\":\\\"lisi\\\"}\"; string json = \"{key1:\\\"zhangsan\\\",key2:\\\"lisi\\\"}\"; Dictionary<string, string> dic = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(json); string template = @\"<li>key:{0},value:{1}</li>\"; System.Text.StringBuilder strb = new System.Text.StringBuilder(); strb.Append(\"Dictionary<string, string>长度\" + dic.Count.ToString() + \"<ul>\"); dic.AsQueryable().ToList().ForEach(x => { strb.AppendLine(string.Format(template, x.Key, x.Value)); }); strb.Append(\"</ul>\"); return strb.ToString(); } #endregion #region NullValueHandling特性 public class Movie { public string Name { get; set; } public string Description { get; set; } public string Classification { get; set; } public string Studio { get; set; } public DateTime? ReleaseDate { get; set; } public List<string> ReleaseCountries { get; set; } } /// <summary> /// 完整序列化输出 /// </summary> public string CommonSerialize() { Movie movie = new Movie(); movie.Name = \"Bad Boys III\"; movie.Description = \"It\'s no Bad Boys\"; string included = Newtonsoft.Json.JsonConvert.SerializeObject( movie, Newtonsoft.Json.Formatting.Indented, //缩进 new Newtonsoft.Json.JsonSerializerSettings { } ); return included; } /// <summary> /// 忽略空(Null)对象输出 /// </summary> /// <returns></returns> public string IgnoredSerialize() { Movie movie = new Movie(); movie.Name = \"Bad Boys III\"; movie.Description = \"It\'s no Bad Boys\"; string included = Newtonsoft.Json.JsonConvert.SerializeObject( movie, Newtonsoft.Json.Formatting.Indented, //缩进 new Newtonsoft.Json.JsonSerializerSettings { NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore } ); return included; } #endregion public class Product { public string Name { get; set; } public string Expiry { get; set; } public Decimal Price { get; set; } public string[] Sizes { get; set; } } #region DefaultValueHandling默认值 public class Invoice { public string Company { get; set; } public decimal Amount { get; set; } // false is default value of bool public bool Paid { get; set; } // null is default value of nullable public DateTime? PaidDate { get; set; } // customize default values [System.ComponentModel.DefaultValue(30)] public int FollowUpDays { get; set; } [System.ComponentModel.DefaultValue(\"\")] public string FollowUpEmailAddress { get; set; } } public void GG() { Invoice invoice = new Invoice { Company = \"Acme Ltd.\", Amount = 50.0m, Paid = false, FollowUpDays = 30, FollowUpEmailAddress = string.Empty, PaidDate = null }; string included = Newtonsoft.Json.JsonConvert.SerializeObject( invoice, Newtonsoft.Json.Formatting.Indented, new Newtonsoft.Json.JsonSerializerSettings { } ); // { // \"Company\": \"Acme Ltd.\", // \"Amount\": 50.0, // \"Paid\": false, // \"PaidDate\": null, // \"FollowUpDays\": 30, // \"FollowUpEmailAddress\": \"\" // } string ignored = Newtonsoft.Json.JsonConvert.SerializeObject( invoice, Newtonsoft.Json.Formatting.Indented, new Newtonsoft.Json.JsonSerializerSettings { DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Ignore } ); // { // \"Company\": \"Acme Ltd.\", // \"Amount\": 50.0 // } } #endregion #region JsonIgnoreAttribute and DataMemberAttribute 特性 public string OutIncluded() { Car car = new Car { Model = \"zhangsan\", Year = DateTime.Now, Features = new List<string> { \"aaaa\", \"bbbb\", \"cccc\" }, LastModified = DateTime.Now.AddDays(5) }; return Newtonsoft.Json.JsonConvert.SerializeObject(car, Newtonsoft.Json.Formatting.Indented); } public string OutIncluded2() { Computer com = new Computer { Name = \"zhangsan\", SalePrice = 3999m, Manufacture = \"red\", StockCount = 5, WholeSalePrice = 34m, NextShipmentDate = DateTime.Now.AddDays(5) }; return Newtonsoft.Json.JsonConvert.SerializeObject(com, Newtonsoft.Json.Formatting.Indented); } public class Car { // included in JSON public string Model { get; set; } public DateTime Year { get; set; } public List<string> Features { get; set; } // ignored [Newtonsoft.Json.JsonIgnore] public DateTime LastModified { get; set; } } //在nt3.5中需要添加System.Runtime.Serialization.dll引用 [System.Runtime.Serialization.DataContract] public class Computer { // included in JSON [System.Runtime.Serialization.DataMember] public string Name { get; set; } [System.Runtime.Serialization.DataMember] public decimal SalePrice { get; set; } // ignored public string Manufacture { get; set; } public int StockCount { get; set; } public decimal WholeSalePrice { get; set; } public DateTime NextShipmentDate { get; set; } } #endregion #region IContractResolver特性 public class Book { public string BookName { get; set; } public decimal BookPrice { get; set; } public string AuthorName { get; set; } public int AuthorAge { get; set; } public string AuthorCountry { get; set; } } public void KK() { Book book = new Book { BookName = \"The Gathering Storm\", BookPrice = 16.19m, AuthorName = \"Brandon Sanderson\", AuthorAge = 34, AuthorCountry = \"United States of America\" }; string startingWithA = Newtonsoft.Json.JsonConvert.SerializeObject( book, Newtonsoft.Json.Formatting.Indented, new Newtonsoft.Json.JsonSerializerSettings { ContractResolver = new DynamicContractResolver(\'A\') } ); // { // \"AuthorName\": \"Brandon Sanderson\", // \"AuthorAge\": 34, // \"AuthorCountry\": \"United States of America\" // } string startingWithB = Newtonsoft.Json.JsonConvert.SerializeObject( book, Newtonsoft.Json.Formatting.Indented, new Newtonsoft.Json.JsonSerializerSettings { ContractResolver = new DynamicContractResolver(\'B\') } ); // { // \"BookName\": \"The Gathering Storm\", // \"BookPrice\": 16.19 // } } public class DynamicContractResolver : Newtonsoft.Json.Serialization.DefaultContractResolver { private readonly char _startingWithChar; public DynamicContractResolver(char startingWithChar) { _startingWithChar = startingWithChar; } protected override IList<Newtonsoft.Json.Serialization.JsonProperty> CreateProperties(Type type, Newtonsoft.Json.MemberSerialization memberSerialization) { IList<Newtonsoft.Json.Serialization.JsonProperty> properties = base.CreateProperties(type, memberSerialization); // only serializer properties that start with the specified character properties = properties.Where(p => p.PropertyName.StartsWith(_startingWithChar.ToString())).ToList(); return properties; } } #endregion //... } } #region Serializing Partial JSON Fragment Example public class SearchResult { public string Title { get; set; } public string Content { get; set; } public string Url { get; set; } } public string SerializingJsonFragment() { #region string googleSearchText = @\"{ \'responseData\': { \'results\': [{ \'GsearchResultClass\': \'GwebSearch\', \'unescapedUrl\': \'http://en.wikipedia.org/wiki/Paris_Hilton\', \'url\': \'http://en.wikipedia.org/wiki/Paris_Hilton\', \'visibleUrl\': \'en.wikipedia.org\', \'cacheUrl\': \'http://www.google.com/search?q=cache:TwrPfhd22hYJ:en.wikipedia.org\', \'title\': \'<b>Paris Hilton</b> - Wikipedia, the free encyclopedia\', \'titleNoFormatting\': \'Paris Hilton - Wikipedia, the free encyclopedia\', \'content\': \'[1] In 2006, she released her debut album...\' }, { \'GsearchResultClass\': \'GwebSearch\', \'unescapedUrl\': \'http://www.imdb.com/name/nm0385296/\', \'url\': \'http://www.imdb.com/name/nm0385296/\', \'visibleUrl\': \'www.imdb.com\', \'cacheUrl\': \'http://www.google.com/search?q=cache:1i34KkqnsooJ:www.imdb.com\', \'title\': \'<b>Paris Hilton</b>\', \'titleNoFormatting\': \'Paris Hilton\', \'content\': \'Self: Zoolander. Socialite <b>Paris Hilton</b>...\' }], \'cursor\': { \'pages\': [{ \'start\': \'0\', \'label\': 1 }, { \'start\': \'4\', \'label\': 2 }, { \'start\': \'8\', \'label\': 3 }, { \'start\': \'12\', \'label\': 4 }], \'estimatedResultCount\': \'59600000\', \'currentPageIndex\': 0, \'moreResultsUrl\': \'http://www.google.com/search?oe=utf8&ie=utf8...\' } }, \'responseDetails\': null, \'responseStatus\': 200 }\"; #endregion Newtonsoft.Json.Linq.JObject googleSearch = Newtonsoft.Json.Linq.JObject.Parse(googleSearchText); // get JSON result objects into a list List<Newtonsoft.Json.Linq.JToken> listJToken = googleSearch[\"responseData\"][\"results\"].Children().ToList(); System.Text.StringBuilder strb = new System.Text.StringBuilder(); string template = @\"<ul> <li>Title:{0}</li> <li>Content: {1}</li> <li>Url:{2}</li> </ul>\"; listJToken.ForEach(x => { // serialize JSON results into .NET objects SearchResult searchResult = Newtonsoft.Json.JsonConvert.DeserializeObject<SearchResult>(x.ToString()); strb.AppendLine(string.Format(template, searchResult.Title, searchResult.Content, searchResult.Url)); }); return strb.ToString(); } #endregion #region ShouldSerialize public class CC { public string Name { get; set; } public CC Manager { get; set; } //http://msdn.microsoft.com/en-us/library/53b8022e.aspx public bool ShouldSerializeManager() { // don\'t serialize the Manager property if an employee is their own manager return (Manager != this); } } public string ShouldSerializeTest() { //create Employee mike CC mike = new CC(); mike.Name = \"Mike Manager\"; //create Employee joe CC joe = new CC(); joe.Name = \"Joe Employee\"; joe.Manager = mike; //set joe\'Manager = mike // mike is his own manager // ShouldSerialize will skip this property mike.Manager = mike; return Newtonsoft.Json.JsonConvert.SerializeObject(new[] { joe, mike }, Newtonsoft.Json.Formatting.Indented); } #endregion //驼峰结构输出(小写打头,后面单词大写) public string JJJ() { Product product = new Product { Name = \"Widget\", Expiry = DateTime.Now.ToString(), Price = 9.99m, Sizes = new[] { \"Small\", \"Medium\", \"Large\" } }; string json = Newtonsoft.Json.JsonConvert.SerializeObject( product, Newtonsoft.Json.Formatting.Indented, new Newtonsoft.Json.JsonSerializerSettings { ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver() } ); return json; //{ // \"name\": \"Widget\", // \"expiryDate\": \"2010-12-20T18:01Z\", // \"price\": 9.99, // \"sizes\": [ // \"Small\", // \"Medium\", // \"Large\" // ] //} } #region ITraceWriter public class Staff { public string Name { get; set; } public List<string> Roles { get; set; } public DateTime StartDate { get; set; } } public void KKKK() { Staff staff = new Staff(); staff.Name = \"Arnie Admin\"; staff.Roles = new List<string> { \"Administrator\" }; staff.StartDate = new DateTime(2000, 12, 12, 12, 12, 12, DateTimeKind.Utc); Newtonsoft.Json.Serialization.ITraceWriter traceWriter = new Newtonsoft.Json.Serialization.MemoryTraceWriter(); Newtonsoft.Json.JsonConvert.SerializeObject( staff, new Newtonsoft.Json.JsonSerializerSettings { TraceWriter = traceWriter, Converters = { new Newtonsoft.Json.Converters.JavaScriptDateTimeConverter() } } ); Console.WriteLine(traceWriter); // 2012-11-11T12:08:42.761 Info Started serializing Newtonsoft.Json.Tests.Serialization.Staff. Path \'\'. // 2012-11-11T12:08:42.785 Info Started serializing System.DateTime with converter Newtonsoft.Json.Converters.JavaScriptDateTimeConverter. Path \'StartDate\'. // 2012-11-11T12:08:42.791 Info Finished serializing System.DateTime with converter Newtonsoft.Json.Converters.JavaScriptDateTimeConverter. Path \'StartDate\'. // 2012-11-11T12:08:42.797 Info Started serializing System.Collections.Generic.List`1[System.String]. Path \'Roles\'. // 2012-11-11T12:08:42.798 Info Finished serializing System.Collections.Generic.List`1[System.String]. Path \'Roles\'. // 2012-11-11T12:08:42.799 Info Finished serializing Newtonsoft.Json.Tests.Serialization.Staff. Path \'\'. // 2013-05-18T21:38:11.255 Verbose Serialized JSON: // { // \"Name\": \"Arnie Admin\", // \"StartDate\": new Date( // 976623132000 // ), // \"Roles\": [ // \"Administrator\" // ] // } } #endregion public string TestReadJsonFromFile() { Linq2Json l2j = new Linq2Json(); Newtonsoft.Json.Linq.JObject jarray = l2j.GetJObject4(); return jarray.ToString(); } using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace microstore { public class Linq2Json { #region GetJObject //Parsing a JSON Object from text public Newtonsoft.Json.Linq.JObject GetJObject() { string json = @\"{ CPU: \'Intel\', Drives: [ \'DVD read/writer\', \'500 gigabyte hard drive\' ] }\"; Newtonsoft.Json.Linq.JObject jobject = Newtonsoft.Json.Linq.JObject.Parse(json); return jobject; } /* * //example:=> * Linq2Json l2j = new Linq2Json(); Newtonsoft.Json.Linq.JObject jobject = l2j.GetJObject2(Server.MapPath(\"json/Person.json\")); //return Newtonsoft.Json.JsonConvert.SerializeObject(jobject, Newtonsoft.Json.Formatting.Indented); return jobject.ToString(); */ //Loading JSON from a file public Newtonsoft.Json.Linq.JObject GetJObject2(string jsonPath) { using (System.IO.StreamReader reader = System.IO.File.OpenText(jsonPath)) { Newtonsoft.Json.Linq.JObject jobject = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.Linq.JToken.ReadFrom(new Newtonsoft.Json.JsonTextReader(reader)); return jobject; } } //Creating JObject public Newtonsoft.Json.Linq.JObject GetJObject3() { List<Post> posts = GetPosts(); Newtonsoft.Json.Linq.JObject jobject = Newtonsoft.Json.Linq.JObject.FromObject(new { channel = new { title = \"James Newton-King\", link = \"http://james.newtonking.com\", description = \"James Newton-King\'s blog.\", item = from p in posts orderby p.Title select new { title = p.Title, description = p.Description, link = p.Link, category = p.Category } } }); return jobject; } /* { \"channel\": { \"title\": \"James Newton-King\", \"link\": \"http://james.newtonking.com\", \"description\": \"James Newton-King\'s blog.\", \"item\": [{ \"title\": \"jewron\", \"description\": \"4546fds\", \"link\": \"http://www.baidu.com\", \"category\": \"jhgj\" }, { \"title\": \"jofdsn\", \"description\": \"mdsfan\", \"link\": \"http://www.baidu.com\", \"category\": \"6546\" }, { \"title\": \"jokjn\", \"description\": \"m3214an\", \"link\": \"http://www.baidu.com\", \"category\": \"hg425\" }, { \"title\": \"jon\", \"description\": \"man\", \"link\": \"http://www.baidu.com\", \"category\": \"goodman\" }] } } */ //Creating JObject public Newtonsoft.Json.Linq.JObject GetJObject4() { List<Post> posts = GetPosts(); Newtonsoft.Json.Linq.JObject rss = new Newtonsoft.Json.Linq.JObject( new Newtonsoft.Json.Linq.JProperty(\"channel\", new Newtonsoft.Json.Linq.JObject( new Newtonsoft.Json.Linq.JProperty(\"title\", \"James Newton-King\"), new Newtonsoft.Json.Linq.JProperty(\"link\", \"http://james.newtonking.com\"), new Newtonsoft.Json.Linq.JProperty(\"description\", \"James Newton-King\'s blog.\"), new Newtonsoft.Json.Linq.JProperty(\"item\", new Newtonsoft.Json.Linq.JArray( from p in posts orderby p.Title select new Newtonsoft.Json.Linq.JObject( new Newtonsoft.Json.Linq.JProperty(\"title\", p.Title), new Newtonsoft.Json.Linq.JProperty(\"description\", p.Description), new Newtonsoft.Json.Linq.JProperty(\"link\", p.Link), new Newtonsoft.Json.Linq.JProperty(\"category\", new Newtonsoft.Json.Linq.JArray( from c in p.Category select new Newtonsoft.Json.Linq.JValue(c) ) ) ) ) ) ) ) ); return rss; } /* { \"channel\": { \"title\": \"James Newton-King\", \"link\": \"http://james.newtonking.com\", \"description\": \"James Newton-King\'s blog.\", \"item\": [{ \"title\": \"jewron\", \"description\": \"4546fds\", \"link\": \"http://www.baidu.com\", \"category\": [\"j\", \"h\", \"g\", \"j\"] }, { \"title\": \"jofdsn\", \"description\": \"mdsfan\", \"link\": \"http://www.baidu.com\", \"category\": [\"6\", \"5\", \"4\", \"6\"] }, { \"title\": \"jokjn\", \"description\": \"m3214an\", \"link\": \"http://www.baidu.com\", \"category\": [\"h\", \"g\", \"4\", \"2\", \"5\"] }, { \"title\": \"jon\", \"description\": \"man\", \"link\": \"http://www.baidu.com\", \"category\": [\"g\", \"o\", \"o\", \"d\", \"m\", \"a\", \"n\"] }] } } */ public class Post { public string Title { get; set; } public string Description { get; set; } public string Link { get; set; } public string Category { get; set; } } private List<Post> GetPosts() { List<Post> listp = new List<Post>() { new Post{Title=\"jon\",Description=\"man\",Link=\"http://www.baidu.com\",Category=\"goodman\"}, new Post{Title=\"jofdsn\",Description=\"mdsfan\",Link=\"http://www.baidu.com\",Category=\"6546\"}, new Post{Title=\"jewron\",Description=\"4546fds\",Link=\"http://www.baidu.com\",Category=\"jhgj\"}, new Post{Title=\"jokjn\",Description=\"m3214an\",Link=\"http://www.baidu.com\",Category=\"hg425\"} }; return listp; } #endregion #region GetJArray /* * //example:=> * Linq2Json l2j = new Linq2Json(); Newtonsoft.Json.Linq.JArray jarray = l2j.GetJArray(); return Newtonsoft.Json.JsonConvert.SerializeObject(jarray, Newtonsoft.Json.Formatting.Indented); //return jarray.ToString(); */ //Parsing a JSON Array from text public Newtonsoft.Json.Linq.JArray GetJArray() { string json = @\"[ \'Small\', \'Medium\', \'Large\' ]\"; Newtonsoft.Json.Linq.JArray jarray = Newtonsoft.Json.Linq.JArray.Parse(json); return jarray; } //Creating JArray public Newtonsoft.Json.Linq.JArray GetJArray2() { Newtonsoft.Json.Linq.JArray array = new Newtonsoft.Json.Linq.JArray(); Newtonsoft.Json.Linq.JValue text = new Newtonsoft.Json.Linq.JValue(\"Manual text\"); Newtonsoft.Json.Linq.JValue date = new Newtonsoft.Json.Linq.JValue(new DateTime(2000, 5, 23)); //add to JArray array.Add(text); array.Add(date); return array; } #endregion //待续... } }
测试效果:
<%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeBehind=\"testjson.aspx.cs\" Inherits=\"microstore.testjson\" %> <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> <html xmlns=\"http://www.w3.org/1999/xhtml\" > <head runat=\"server\"> <title></title> <style type=\"text/css\"> body{ font-family:Arial,微软雅黑; font-size:14px;} a{ text-decoration:none; color:#333;} a:hover{ text-decoration:none; color:#f00;} </style> </head> <body> <form id=\"form1\" runat=\"server\"> <h3>序列化对象</h3> 表现1:<br /> <%=TestJsonSerialize()%> <%=TestListJsonSerialize() %> 表现2:<br /> <%=TestListJsonSerialize2() %> <hr /> <h3>反序列化对象</h3> <p>单个对象</p> <%=TestJsonDeserialize() %> <p>多个对象</p> <%=TestListJsonDeserialize() %> <p>反序列化成数据字典Dictionary</p> <%=TestDeserialize2Dic() %> <hr /> <h3>自定义反序列化</h3> <%=TestListCustomDeserialize()%> <hr /> <h3>序列化输出的忽略特性</h3> NullValueHandling特性忽略=><br /> <%=CommonSerialize() %><br /> <%=IgnoredSerialize()%><br /><br /> 属性标记忽略=><br /> <%=OutIncluded() %><br /> <%=OutIncluded2() %> <hr /> <h3>Serializing Partial JSON Fragments</h3> <%=SerializingJsonFragment() %> <hr /> <h3>ShouldSerialize</h3> <%=ShouldSerializeTest() %><br /> <%=JJJ() %><br /><br /> <%=TestReadJsonFromFile() %> </form> </body> </html>
显示:
序列化对象
表现1:
{ \"Name\": \"Apple\", \"Expiry\": \"2014-05-04 02:08:58\", \"Price\": 3.99, \"Sizes\": null } [ { \"Name\": \"Apple\", \"Expiry\": \"2014-05-04 02:08:58\", \"Price\": 3.99, \"Sizes\": [ \"Small\", \"Medium\", \"Large\" ] }, { \"Name\": \"Apple\", \"Expiry\": \"2014-05-04 02:08:58\", \"Price\": 3.99, \"Sizes\": [ \"Small\", \"Medium\", \"Large\" ] } ]
表现2:
[ { \"Name\": \"Apple\", \"Expiry\": \"2014-05-04 02:08:58\", \"Price\": 3.99, \"Sizes\": [ \"Small\", \"Medium\", \"Large\" ] }, { \"Name\": \"Apple\", \"Expiry\": \"2014-05-04 02:08:58\", \"Price\": 3.99, \"Sizes\": [ \"Small\", \"Medium\", \"Large\" ] } ]
反序列化对象
单个对象
•Apple
•2014-05-03 10:20:59
•3.99
•Small,Medium,Large
多个对象
•Apple
•2014-05-03 10:20:59
•3.99
•Small,Medium,Large
•Apple
•2014-05-03 10:20:59
•3.99
•Small,Medium,Large
反序列化成数据字典Dictionary
Dictionary长度2
•key:key1,value:zhangsan
•key:key2,value:lisi
---------------------------------------------------------------
自定义反序列化
•当前List[x]对象类型:microstore.Employee
•FirstName:Maurice
•LastName:Moss
•BirthDate:1981-3-8 0:00:00
•Department:IT
•JobTitle:Support
•当前List[x]对象类型:microstore.Employee
•FirstName:Jen
•LastName:Barber
•BirthDate:1985-12-10 0:00:00
•Department:IT
•JobTitle:Manager
-------------------------------------------------------------
序列化输出的忽略特性
NullValueHandling特性忽略=>
{ \"Name\": \"Bad Boys III\", \"Description\": \"It\'s no Bad Boys\", \"Classification\": null, \"Studio\": null, \"ReleaseDate\": null, \"ReleaseCountries\": null }
{ \"Name\": \"Bad Boys III\", \"Description\": \"It\'s no Bad Boys\" }
属性标记忽略=>
{ \"Model\": \"zhangsan\", \"Year\": \"2014-05-01T02:08:58.671875+08:00\", \"Features\": [ \"aaaa\", \"bbbb\", \"cccc\" ] }
{ \"Name\": \"zhangsan\", \"SalePrice\": 3999.0 }
-----------------------------------------------------------------
Serializing Partial JSON Fragments
•Title:Paris Hilton - Wikipedia, the free encyclopedia
•Content: [1] In 2006, she released her debut album...
•Url:http://en.wikipedia.org/wiki/Paris_Hilton
•Title:Paris Hilton
•Content: Self: Zoolander. Socialite Paris Hilton...
•Url:http://www.imdb.com/name/nm0385296/
--------------------------------------------------------------------------------
ShouldSerialize
[ { \"Name\": \"Joe Employee\", \"Manager\": { \"Name\": \"Mike Manager\" } }, { \"Name\": \"Mike Manager\" } ]
{ \"name\": \"Widget\", \"expiry\": \"2014-5-1 2:08:58\", \"price\": 9.99, \"sizes\": [ \"Small\", \"Medium\", \"Large\" ] }
{ \"channel\": { \"title\": \"James Newton-King\", \"link\": \"http://james.newtonking.com\", \"description\": \"James Newton-King\'s blog.\", \"item\": [ { \"title\": \"jewron\", \"description\": \"4546fds\", \"link\": \"http://www.baidu.com\", \"category\": [ \"j\", \"h\", \"g\", \"j\" ] }, { \"title\": \"jofdsn\", \"description\": \"mdsfan\", \"link\": \"http://www.baidu.com\", \"category\": [ \"6\", \"5\", \"4\", \"6\" ] }, { \"title\": \"jokjn\", \"description\": \"m3214an\", \"link\": \"http://www.baidu.com\", \"category\": [ \"h\", \"g\", \"4\", \"2\", \"5\" ] }, { \"title\": \"jon\", \"description\": \"man\", \"link\": \"http://www.baidu.com\", \"category\": [ \"g\", \"o\", \"o\", \"d\", \"m\", \"a\", \"n\" ] } ] } }
以上这篇Json.net 常用使用小结(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持phpstudy。
本文地址:https://www.stayed.cn/item/9366
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我