时间:2023-01-29 10:46:40 | 栏目:.NET代码 | 点击:次
??System.Text.Json??作为.NET默认的JSON序列化和反序列化类库,让我们看看,在.NET 6中有哪些功能上的改进?
在属性上声明??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"
}
??System.Text.Json??新增了4个接口:
从名字上也可以看出它们的作用,即在序列化/反序列化前后被调用。
示例代码如下:
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();
}
}