.NET Json序列化方案选择

在C#中,进行JSON序列化和反序列化有多种方案可供选择,常用的是下面俩个

System.Text.Json:这是.NET Core和.NET 5中内置的JSON序列化和反序列化库,提供了高性能和低内存消耗的JSON处理能力。

Newtonsoft.Json:这是一个流行的第三方JSON处理库,广泛用于Framework中的JSON序列化和反序列化。

我们在使用过程中如何选择方案

.NET Framework

我们建议使用Newtonsoft.Json

System.Text.Json在.NET Framwork,需要通过Nuget安装

分别序列化一个小对象,按秒表计时对比下输出耗时

复制代码
 1     System.Text.Json.JsonSerializer.Serialize(new TestMode()
 2     {
 3         ExePath = cAaExe,
 4         Args = args,
 5     });
 6 
 7     JsonConvert.SerializeObject(new TestMode()
 8     {
 9         ExePath = cAaExe,
10         Args = args,
11     });
复制代码

首次序列化 System.Text.Json:248ms,Newtonsoft.Json:17ms

二次序列化 System.Text.Json:0ms,Newtonsoft.Json:0ms

所以.NET Framework中,我们使用Newtonsoft.Json,另外库的功能性、社区支持度、稳定性都比较好。

.NET

我们建议使用System.Text.Json。库在.NET Core 3.0+ 和 .NET 5+内是自带的。

Newtonsoft.Json在.NET Core和.NET 5+中也可以使用该库,但其性能和内存消耗略高于System.Text.Json

我们对比下延时:

首次序列化 System.Text.Json:31ms,Newtonsoft.Json:128ms

二次序列化 System.Text.Json:0ms,Newtonsoft.Json:0ms

另外,不要安装System.Text.Json的Nuget包,否则首次序列化耗时System.Text.Json:150ms。

 

值得说下,一些简单对象的序列化,不存在后续扩展、变更的场景,可以直接用字符串格式化,性能杠杠的。

posted @   唐宋元明清2188  阅读(138)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示
剑桥
16:15发布
剑桥
16:15发布
7°
西南风
3级
空气质量
相对湿度
66%
今天
2°/10°
周三
2°/8°
周四
中雨
2°/7°