信息发布→ 登录 注册 退出

.NET 6新特性试用之System.Text.Json功能改进

发布时间:2026-01-11

点击量:
目录
  • 前言:
  • Demo
    • ​1.属性排序​
    • ​2.序列化通知​
  • 结论:

    前言:

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

    结论:

    • ​“属性排序”功能有点鸡肋,目前还没碰到过需要指定排序的应用场景。​
    • ​“序列化通知”功能对于设置默认值和验证属性值合法性非常有用。​
    在线客服
    服务热线

    服务热线

    4008888355

    微信咨询
    二维码
    返回顶部
    ×二维码

    截屏,微信识别二维码

    打开微信

    微信号已复制,请打开微信添加咨询详情!