• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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.CustomCreationConverterIPerson>
      {
        //重写abstract class CustomCreationConverterT>的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" };
    
          ListProduct> plist = new ListProduct>();
          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.DeserializeObjectProduct>(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\"]}";
          ListProduct> plist = Newtonsoft.Json.JsonConvert.DeserializeObjectListProduct>>(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\" } ] ";
          ListIPerson> people = Newtonsoft.Json.JsonConvert.DeserializeObjectListIPerson>>(strJson, new PersonConverter());
          IPerson person = people[0];
    
          string template = @"p>ul>
                      li>当前ListIPerson>[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\"}";
          Dictionarystring, string> dic = Newtonsoft.Json.JsonConvert.DeserializeObjectDictionarystring, string>>(json);
    
          string template = @"li>key:{0},value:{1}/li>";
          System.Text.StringBuilder strb = new System.Text.StringBuilder();
          strb.Append("Dictionarystring, 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 Liststring> 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 Liststring> { "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 Liststring> 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 IListNewtonsoft.Json.Serialization.JsonProperty> CreateProperties(Type type, Newtonsoft.Json.MemberSerialization memberSerialization)
          {
            IListNewtonsoft.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=utf8ie=utf8...'
              }
            },
            'responseDetails': null,
            'responseStatus': 200
          }";
          #endregion
    
          Newtonsoft.Json.Linq.JObject googleSearch = Newtonsoft.Json.Linq.JObject.Parse(googleSearchText);
          // get JSON result objects into a list
          ListNewtonsoft.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.DeserializeObjectSearchResult>(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 Liststring> Roles { get; set; }
          public DateTime StartDate { get; set; }
        }
        public void KKKK()
        {
          Staff staff = new Staff();
          staff.Name = "Arnie Admin";
          staff.Roles = new Liststring> { "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()
        {
          ListPost> 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()
        {
          ListPost> 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 ListPost> GetPosts()
        {
          ListPost> listp = new ListPost>()
          {
            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 常用使用小结(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • 浅析JSONP技术原理及实现
    • JSONP原理及简单实现
    上一篇:网页WEB打印控件制作
    下一篇:asp.net提取多层嵌套json数据的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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