首页 > 编程 > .NET > 正文

Json.net 常用使用小结(推荐)

2024-07-10 13:30:38
字体:
来源:转载
供稿:网友
下面小编就为大家带来一篇Json.net 常用使用小结(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
 

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        {          link = "http://james.newtonking.com",          description = "James Newton-King's blog.",          item =            from p in posts            orderby p.Title            select new            {              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 常用使用小结(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持VeVb武林网。



注:相关教程知识阅读请移步到ASP.NET教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表