.NET 6新特性试用之System.Text.Json功能改进
短信预约 -IT技能 免费直播动态提醒
前言:
System.Text.Json
作为.NET默认的JSON
序列化和反序列化类库,让我们看看,在.NET 6中有哪些功能上的改进?
Demo
1.属性排序
在属性上声明JsonPropertyOrderAttribute
来控制属性序列化的顺序,而以前,顺序是由反射顺序决定的,是不确定的。
示例代码如下:
public class User
{
public int Age { get; set; }
[JsonPropertyOrder(1)]
public string Name { get; set; }
[JsonPropertyOrder(-1)]
public int Id { get; set; }
}
排序值较小的数字首先被序列化;没有声明属性的默认排序值为0:
{
"Id": 1,
"Age": 20,
"Name": "My IO"
}
2.序列化通知
System.Text.Json新增了4个接口:
- IJsonOnDeserialized
- IJsonOnDeserializing
- IJsonOnSerialized
- IJsonOnSerializing
从名字上也可以看出它们的作用,即在序列化/反序列化前后被调用。
示例代码如下:
public class User : IJsonOnSerialized, IJsonOnDeserialized
{
public void OnDeserialized() => this.Validate(); // 反序列化后调用
public void OnSerializing() => this.Validate(); // 序列化前调用
private void Validate()
{
if (this.Age <= 0)
throw new ArgumentException();
}
}
结论:
- “属性排序”功能有点鸡肋,目前还没碰到过需要指定排序的应用场景。
- “序列化通知”功能对于设置默认值和验证属性值合法性非常有用。
到此这篇关于.NET 6新特性试用之System.Text.Json功能改进的文章就介绍到这了,更多相关 System.Text.Json功能改进内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341