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

Swifter.Json是.NET平台上一个功能强大、稳定且高性能的Json序列化和反序列化工具,支持.NET多种框架,具有无BUG、全面API文档等特点。相比Newtonsoft.Json,Swifter.Json在性能上提高5到10倍,解决了其他库的性能和稳定性问题。
摘要由CSDN通过智能技术生成

(给DotNet加星标,提升.Net技能)

转自:陈鑫伟 cnblogs.com/Dogwei/p/11444426.html

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

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

3acc7ae30be8a778abd64cdebfdef88a.png

相比 Newtonsoft.Json提高了5到10倍左右,虽然目前已有许多 Json 库号称高性能,但实际上我认可的除Swifter.Json只有 Spanjson,但它缺点太明显,仅支持 .Net Core 2.1+ 且稳定性不好。

如果您不愿意使用 Swifter.Json,那本人建议您使用 Newtonsoft.Json,毕竟它除了性能之外全是优点。

还有一个与性能密切相关一个特性:小分配。

顾名思义就是分配的内存大小,举例:当程序在执行反序列化数组操作时,因为对数组长度未知,所以多数 Json 工具都在这个过程中反复的创建更大的数组,这个过程相当耗时且耗资源。

Swifter.Json 已使用池技术完美解决这个问题。

Spanjson 也使用 Core 上的 ArrayPool 池解决,所以我为 Spanjson 点了小星星。

简单使用

9c040779ba376d3f87bd696292d2f91f.png

更多使用方法和文档请上Github查看Wiki。

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

2c9b7b4451941d03ca93743ba8e510a5.png

推荐阅读

(点击标题可跳转阅读)

.NET平台功能最强大,性能最佳的JSON库

使用VS Code开发.NET Core程序指南

.NET Core 分布式事务CAP 2.6 快速入门

看完本文有收获?请转发分享给更多人

关注「DotNet」加星标,提升.Net技能 

605be29d9c8f8129e3a4d52de77b31a5.png

好文章,我在看❤️

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值