侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

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

前端  /  管理员 发布于 7年前   163

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 postsorderby p.Titleselect 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.Categoryselect 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 常用使用小结(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


  • 上一条:
    asp.net提取多层嵌套json数据的方法
    下一条:
    解决Asp.net Mvc返回JsonResult中DateTime类型数据格式问题的方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 使用 Alpine.js 排序插件对元素进行排序(0个评论)
    • 在js中使用jszip + file-saver实现批量下载OSS文件功能示例(0个评论)
    • 在vue中实现父页面按钮显示子组件中的el-dialog效果(0个评论)
    • 使用mock-server实现模拟接口对接流程步骤(0个评论)
    • vue项目打包程序实现把项目打包成一个exe可执行程序(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-03
    • 2018-04
    • 2018-05
    • 2018-06
    • 2018-09
    • 2018-11
    • 2018-12
    • 2019-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2021-04
    • 2021-05
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客