网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 Json.net 常用使用小结(推荐)
内容
    下面小编就为大家带来一篇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
            {
              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 常用使用小结(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/14 3:58:55