一.写在前面
System.Text.Json 是 .NET Core 3 及以上版本内置的 Json 序列化组件,刚推出的时候经常看到踩各种坑的吐槽,现在经过几个版本的迭代优化,提升了易用性,修复了各种问题,是时候考虑使用 System.Text.Json 了。本文将从
使用
层面来进行对比。
System.Text.Json 在默认情况下
十分严格
,避免进行任何猜测或解释,强调确定性行为。比如:字符串默认转义,默认不允许尾随逗号,默认不允许带引号的数字等,不允许单引号或者不带引号的属性名称和字符串值。 该库是为了实现性能和安全性而特意这样设计的。
Newtonsoft.Json
默认情况下十分灵活。
关于性能,参考 Incerry 的性能测试:
.NET性能系列文章二:Newtonsoft.Json vs. System.Text.Json
,如果打算使用 .NET 7 不妨考虑一下 System.Text.Json。
Newtonsoft.Json 使用 13.0.2 版本,基于 .NET 7。
二.序列化
1.序列化
定义 Class
public class Cat
public string? Name { get; set; }
public int Age { get; set; }
var cat = new Cat() { Name = "xiaoshi", Age = 18 };
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(cat));