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