当前位置: 移动技术网 > IT编程>开发语言>.net > Json.net 常用使用小结(推荐)

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

2017年12月12日  | 移动技术网IT编程  | 我要评论

黄硕忠,网游之侠义天下下载,承德石油高等专科学校

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网