欢迎来到代码驿站!

.NET代码

当前位置:首页 > 软件编程 > .NET代码

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

时间:2023-01-29 10:46:40|栏目:.NET代码|点击:

前言:

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

结论:

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

上一篇:ASP.NET中HiddenField隐藏域控件的使用方法

栏    目:.NET代码

下一篇:没有了

本文标题:.NET 6新特性试用之System.Text.Json功能改进

本文地址:http://www.codeinn.net/misctech/224703.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有