.NET 6新特性试用之System.Text.Json功能改进
前言:
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功能改进内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
.NET的基元类型包括什么及Unmanaged和Blittable类型详解
这篇文章主要介绍了.NET的基元类型包括什么及Unmanaged和Blittable类型详解,Unmanaged类型可以理解不涉及托管对象引用的值类型,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下2023-06-06.Net Core自动化部署之利用docker版jenkins部署dotnetcore应用的方法
这篇文章主要给大家介绍了关于.Net Core自动化部署之利用docker版jenkins部署dotnetcore应用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2018-06-06win8/8.1系统安装.net framework 3.5出现0x800F0906代码错误的解决方法
这篇文章主要为大家详细介绍了win8/8.1系统安装.net framework 3.5出现0x800F0906代码错误的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-01-01ASP.NET MVC5验证系列之Remote Validation
这篇文章主要为大家详细介绍了ASP.NET MVC5验证系列之Remote Validation,感兴趣的小伙伴们可以参考一下2016-07-07
最新评论