亲宝软件园·资讯

展开

System.Text.Json功能改进

My IO 人气:0

前言:

​​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个接口:

从名字上也可以看出它们的作用,即在序列化/反序列化前后被调用。

示例代码如下:

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();
    }
}

结论:

加载全部内容

相关教程
猜你喜欢
用户评论