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的对象就是 datacontractjsonserializer
和 javascriptserializer
这两个。但是这个是在.net 3.5之后才支持的。并且性能上并不优秀。
性能对比图如下:
这是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.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的关系。
- 暂时我了解了这么多的功能。总之,它对于一些什么为空处理、日期格式控制、忽略属性转换等等的一些配置处理,都做的非常不错,有关详细介绍会在后续学习之后,进行总结记录介绍。
到此这篇关于json.net6.0用法介绍的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。