千家信息网

.Net 平台之Swifter.Json 序列化库的示例分析

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,.Net 平台之Swifter.Json 序列化库【开源】的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Json 简介Json
千家信息网最后更新 2025年02月04日.Net 平台之Swifter.Json 序列化库的示例分析

.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 序列化库【开源】的示例分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

序列 支持 平台 性能 数据 问题 工具 类型 强大 数组 文档 方法 高性能 开发 测试 示例 分析 明显 之间 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发工程师简历自我 wow服务器不兼容什么意思 延吉大龙软件开发 互联网公司与科技公司区别 启信互联网科技有限公司 当前网络安全发展的前景 数据库的恢复技术有哪些 查询mysql数据库名 数据库分配账号密码 亚马逊服务器做店铺体检可靠吗 金蝶软件开发岗怎么样 网络技术有那么复杂吗 数据库如何加入三个字段 服务器安全狗默认密码忘记 移动软件开发毕业作品 南宁做软件开发的工资 苏木镇网络安全自查报告 姜堰区直销网络技术诚信服务 软件开发工程师网上 数据库设计的实验总结怎么写 数据库分离什么用 e起学法 《网络安全法 赣南日报网络安全题目 豪恒网络技术有限公司怎么样 嘉兴可视化智慧医院软件开发 因为数据库正在访问权限 淘游网络技术有限公司 汇顶科技软件开发怎么样 播放网络安全手抄报的元素之一 dede的数据库权限
0