欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Json.Net6.0用法介绍

程序员文章站 2022-06-15 17:44:46
前言json(javascript object notation) 是一种轻量级的数据交换格式。简单地说,json 可以将 javascript 对象中表示的一组数据转换为字符串,然后就可以在函数之...

前言

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的对象就是 datacontractjsonserializer javascriptserializer这两个。但是这个是在.net 3.5之后才支持的。并且性能上并不优秀。

性能对比图如下:

Json.Net6.0用法介绍

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

jb51下载地址:

当然通过vs进入nuget管理包也可以进行下载json.net的程序包

Json.Net6.0用法介绍

下面我们来简单的通过实例进行初步了解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);

通过调试得到的数据为

Json.Net6.0用法介绍

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");

转换结果为

Json.Net6.0用法介绍

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);

通过调试得到的结果为

Json.Net6.0用法介绍

其他功能简介

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

到此这篇关于json.net6.0用法介绍的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。

相关标签: Json .Net 用法