大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
.Net 平台之Swifter.Json 序列化库【开源】的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
成都创新互联是一家集网站建设,田阳企业网站建设,田阳品牌网站建设,网站定制,田阳网站建设报价,网络营销,网络优化,田阳网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
Json 简介
Json (JavaScript Object Notation) 是一种轻量级的数据交换格式。它作为目前最欢迎的数据交换格式,也是各大开源贡献者的必争之地,如:阿里爸爸的 fastjson(java),腾讯的 rapidjson(c++) 等。但 .Net 却没有得到大厂的青睐,在 Swifter.Json 之前 .Net 的 Json 解析库都不完美。
Swifter.Json 简介
Swifter.Json 是 .Net 平台上一个功能强大,简单易用,稳定及高性能的 Json 序列化和反序列化工具。
Github : https://github.com/Dogwei/Swifter.Json
码云 : https://gitee.com/eway0/Swifter
Swifter.Json 强大之处
1:支持 .Net 已知所有对象结构,包括深度循环结构,引用类型属性等。
2:支持几乎所有常用的数据类型,并多方案轻松自定义类型的序列化行为,后续将持续增加。
3:支持缩进 Json,忽略 Null 值 0 值 "" 值等,支持使用 { "$Ref" : "#/Target" } 表示重复引用,或将循环引用序列化为 Null 等,支持设置最大深度。
4:支持 .Net Core 2.0+,.Net Framework 2.0+,.Net Standard 2.0+,Xamarin,Unify,Mono 等平台。
5:Swifter.Json 几乎是无 BUG 的,因为它已有多个上线项目在运行,且每次发布都会经过我们自己单元测试和 Newtonsoft.Json 和 Spanjson 的单元测试来确保它的稳定性,如果您遇到了问题,可以在 Github 上发布一个 issue,我们会尽力帮助您。
6:完整全面的 API 中文文档,每个公开的类型和方法都有中文说明,也有 Github 上的 Wiki 文档 (现主要维护文档)。
为什么要重复造轮子?
目前 .Net 平台上的 Json 库都存在一些明显的缺点:一些虽然简单易用,但是性能不高,一些性能高却不稳定,稳定的有性能低且过于复杂。
我们迫切需要一个强大,稳定,高性能且易于使用的 Json 序列化工具!
所以 Swifter.Json 被制作出来了。
Swifter.Json 的库引用
Swifter.Core:这是一个工具包,它可以为类库开发者提供巨大的帮助,Swifter.Json 基于它。它提供了高效的数据读写 API,高效的数学算法以及 .Net CLR 无数据信息,以及解决各平台版本之间的差异问题等,后期我们将基于这个库开发一个 Swifter.MessagePack (已开发好,待发布)。这个库 300~400KB 之间(各平台有差异)。
Swifter.Unsafe:这是一个 IL 代码编写的库,因为提供的操作与 System.Runtime.ComplierServices.Unsafe 提供的功能类似,所以取名叫 Swifter.Unsafe,这个库大慨 5KB。
Swifter.Json:实现 Swifter.Json 的 IValueReader, IValueWriter 即实现了对任意对象执行序列化和反序列化,主要的代码在 JsonSerializer (实现 IValueWriter) 和 JsonDeserializer (实现 IValueReader)中,JsonFormatter 提供 API重载,现在已支持全异步 API。这个库大概 86KB。
Swifter.Json 的性能
.Net Core 3.0 Preview 7 的测试结果
相比 Newtonsoft.Json 提高了 5 到 10 倍左右,虽然目前已有许多 Json 库号称高性能,但实际上我认可的除Swifter.Json只有 Spanjson,但它缺点太明显,仅支持 .Net Core 2.1+ 且稳定性不好。如果您不愿意使用 Swifter.Json,那本人建议您使用 Newtonsoft.Json,毕竟它除了性能之外全是优点。
还有一个与性能密切相关一个特性:小分配。顾名思义就是分配的内存大小,举例:当程序在执行反序列化数组操作时,因为对数组长度未知,所以多数 Json 工具都在这个过程中反复的创建更大的数组,这个过程相当耗时且耗资源。Swifter.Json 已使用池技术完美解决这个问题。Spanjson 也使用 Core 上的 ArrayPool 池解决,所以我为 Spanjson 点了小星星。
看完上述内容,你们掌握.Net 平台之Swifter.Json 序列化库【开源】的示例分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!