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://github.com/Dogwei/Swifter.Json> 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 点了小星星。 简单使用 更多使用方法和文档请上 Github 查看 Wiki。
最后附上一张我们对 .Net 平台已有的 Json 库一个简单的评价 感谢阅读!
热门工具 换一换