• Json.Net6.0入门学习试水篇


    前言

      JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是 JavaScript 很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。

      它所具有的特性:

      1、Flexible JSON serializer for converting between .NET objects and JSON ——灵活的JSON序列化器用于实现.NET对象与JSON的转换

      2、LINQ to JSON for manually reading and writing JSON ——LINQ to JSON用于手动读写Json

      3、High performance, faster than .NET's built-in JSON serializers——高性能,比.NET内置的JSON序列化程序速度要更快

      4、Writes indented, easy to read JSON ——缩排书写,使得Json易读

      5、Convert JSON to and from XML——支持JSON 与 XML 两种格式相互转换

      6、Supports .NET 2 .NET 3.5 .NET 4, Silverlight, Windows Phone and Windows 8——支持.NET2.NET3.5.NET4,Silverlight,Windows Phone和Windows 8

      在.Net中内置了读写Json的对象就是 DataContractJsonSerializerJavaScriptSerializer这两个。但是这个是在.Net 3.5之后才支持的。并且性能上并不优秀。

      性能对比图如下:

      

    这是Json.Net 5与.NET内置对象的性能对比图,而现在Json.Net的版本已经到达了Version 6.0.1 ,相信它会有更好的表现。JSON.NET是开源的,下载地址:http://json.codeplex.com/,这里有完整的源代码,当然也可以参考http://james.newtonking.com/ 这里。

    当然通过VS进入Nuget管理包也可以进行下载Json.Net的程序包

    下面我们来简单的通过实例进行初步了解JSON.NET。

    1、序列化一个对象为json字符串。

    2、然后再将字符串反序列化为对象。

    3、JSON与XML之间的互转。

    4、……当然还有其他格式的转换,我们暂时不进行举例,后面的文章会对此进行比较详细的描述。

    Serialize an Object——序列化一个对象

    首先定义一个实体类对象

        public class Account
        {
            public string Email { get; set; }
            public bool Active { get; set; }
            public DateTime CreatedDate { get; set; }
            public IList<string> Roles { get; set; }
        }

    实例化实体类,然后进行序列化为Json字符串

                Account account = new Account()
                {
                    Email = "aehyok@vip.qq.com",
                    Active = true,
                    CreatedDate = new DateTime(2014, 3, 27, 0, 0, 0, DateTimeKind.Utc),
                    Roles = new List<string>{"aehyok","Kris" }
                };
                string json = JsonConvert.SerializeObject(account, Formatting.Indented);

    得到的json字符串结果为

    {
      "Email": "aehyok@vip.qq.com",
      "Active": true,
      "CreatedDate": "2014-03-27T00:00:00Z",
      "Roles": [
        "aehyok",
        "Kris"
      ]
    }

    Deserialize an Object——反序列化一个对象

    继续使用上面的实体类

    现在是先定义一个Json的字符串,我们也可以将上面生成的Json字符串进行简单的修改,然后进行反序列化处理

                string json = @"{
                  'Email': 'aehyok@vip.qq.com',
                  'Active': true,
                  'CreatedDate': '2014-03-27T00:00:00Z',
                  'Roles': [
                    'aehyok',
                    'Kris'
                  ]
                }";
                Account account = JsonConvert.DeserializeObject<Account>(json);

    通过调试得到的数据为

    Convert JSON to XML——将JSON转换为XML

    首先还是定义一个Json字符串,然后对其进行转换

                string json = @"{
                   '@Id': 1,
                   'Email': 'aehyok@viq.qq.com',
                   'Active': true,
                   'CreatedDate': '2014-01-20T00:00:00Z',
                   'Roles': [
                     'Kris',
                     'aehyok'
                   ],
                  'Team': {
                    '@Id': 2,
                    'Name': 'Software Developers',
                    'Description': 'Creators of fine software products and services.'
                  }
                }";
                XNode node = JsonConvert.DeserializeXNode(json, "Root");

    转换结果为

    Convert XML to JSON——将XML转换为JSON

    现在就是需要先定义一个简单的XML字符串,然后对其进行转换处理

                string xml = @"<?xml version='1.0' standalone='no'?>
                 <root>
                   <person id='1'>
                   <name>aehyok</name>
                   <url>http://www.google.com</url>
                   </person>
                   <person id='2'>
                   <name>Kris</name>
                   <url>http://www.baidu.com</url>
                  </person>
                </root>";
                
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml);
                
                string json = JsonConvert.SerializeXmlNode(doc);

    通过调试得到的结果为

    其他功能简介

    1、Linq to JSON是用来操作JSON对象的。可以用于快速查询、修改、删除和创建JSON对象。当JSON对象内容比较复杂,而我们仅仅需要其中的一小部分数据时,可以考虑使用Linq to JSON来读取和修改部分的数据而非反序列化全部。

    2、Json.Net不仅支持序列化和反序列化对象,还支持XML和JSON之间的转换。它支持的数据类型与JSON之间的转换,例如:DataSet、DataTable、Entity Framework和NHibernate、Collection、Dictionary、Dynamic等等,大部分的数据类型基本都支持。

    3、JSON.NET支持BSON数据的序列化和反序列化。

    BSON(Binary Serialized Document Format)是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。

     4、JSON Schema 用于描述JSON数据的结构和类型。如同DTD与XML的关系。

      暂时我了解了这么多的功能。总之,它对于一些什么为空处理、日期格式控制、忽略属性转换等等的一些配置处理,都做的非常不错,有关详细介绍会在后续学习之后,进行总结记录介绍。

  • 相关阅读:
    CSS的选择符
    小例子分析C#继承机制
    socket服务端(.net)代码
    分页代码
    web.config的数据库连接字符串写法与取法
    怎么提高网站速度,对于大访问量网站如何对网站进行优化
    方维分享系统二次开发, 给评论、主题、回复、活动 加审核的功能
    方维分享系统修改,本地安装失败,后台无法登陆
    方维分享系统修改,后台一键更新缓存
    方维分享系统 第三方登录appkey申请
  • 原文地址:https://www.cnblogs.com/aehyok/p/3627420.html
Copyright © 2020-2023  润新知