json支持的最大长度_Swifter.Json 可能是 .Net 平台迄今为止性能最佳的 Json 序列化库【开源】...

Json 简介

Json (JavaScript Object Notation) 是一种轻量级的数据交换格式。它作为目前最欢迎的数据交换格式,也是各大开源贡献者的必争之地,如:阿里爸爸的 fastjson(java),腾讯的 rapidjson(c++) 等。但 .Net 却没有得到大厂的青睐,在 Swifter.Json 之前 .Net 的 Json 解析库都不完美。

C# .Net 简介

.Net 是微软开发的平台,它通常使用 C# 语音开发。它低门槛高上限的特点起初吸引了大量开发人员,一度成为最流行的开发平台和语言,但在开源热潮中微软的决策失误让它失去第一宝座。.Net 开源和跨平台 .Net Core 虽然匆匆来迟,但没关系,还有很多和我们一样的开发者们喜欢且坚持者 .Net 平台和 C# 语言。

注:C# .Net 仍是主流开发语言和平台哦!欢迎新手入坑。

Swifter.Json 简介

Swifter.Json 是 .Net 平台上一个功能强大,简单易用,稳定及高性能的 Json 序列化和反序列化工具。

Github :

https://github.com/Dogwei/Swifter.Json​github.com

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 的测试结果

add689ac44a66ae997d4e4832c79c072.png

相比 Newtonsoft.Json 提高了 5 到 10 倍左右,虽然目前已有许多 Json 库号称高性能,但实际上我认可的除Swifter.Json只有 Spanjson,但它缺点太明显,仅支持 .Net Core 2.1+ 且稳定性不好。如果您不愿意使用 Swifter.Json,那本人建议您使用 Newtonsoft.Json,毕竟它除了性能之外全是优点。

还有一个与性能密切相关一个特性:小分配。顾名思义就是分配的内存大小,举例:当程序在执行反序列化数组操作时,因为对数组长度未知,所以多数 Json 工具都在这个过程中反复的创建更大的数组,这个过程相当耗时且耗资源。Swifter.Json 已使用池技术完美解决这个问题。Spanjson 也使用 Core 上的 ArrayPool 池解决,所以我为 Spanjson 点了小星星。

简单使用

4b4e824c707401172df4e992e7efb708.png

更多使用方法和文档请上 Github 搜 Swifter.Json。

最后附上一张我们对 .Net 平台已有的 Json 库一个简单的评价

02bd8d1e44c835c6006597a1310ab3be.png

感谢阅读!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值