C# 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。

 

值得說下,一些簡單對象的序列化,不存在後續擴展、變更的場景,可以直接用字符串格式化,性能槓槓的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章