.NET?6新特性試用之System.Text.Json功能改進(jìn)
前言:
??System.Text.Json??
作為.NET默認(rèn)的JSON
序列化和反序列化類庫,讓我們看看,在.NET 6中有哪些功能上的改進(jìn)?
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; } }
排序值較小的數(shù)字首先被序列化;沒有聲明屬性的默認(rèn)排序值為0:
{ ? "Id": 1, ? "Age": 20, ? "Name": "My IO" }
?2.序列化通知?
??System.Text.Json??新增了4個(gè)接口:
- IJsonOnDeserialized
- IJsonOnDeserializing
- IJsonOnSerialized
- IJsonOnSerializing
從名字上也可以看出它們的作用,即在序列化/反序列化前后被調(diào)用。
示例代碼如下:
public class User : ?IJsonOnSerialized, IJsonOnDeserialized { ? ? public void OnDeserialized() => this.Validate(); // 反序列化后調(diào)用 ? ? public void OnSerializing() => this.Validate(); // 序列化前調(diào)用 ? ? private void Validate() ? ? { ? ? ? ? if (this.Age <= 0) ? ? ? ? ? ? throw new ArgumentException(); ? ? } }
結(jié)論:
- ?“屬性排序”功能有點(diǎn)雞肋,目前還沒碰到過需要指定排序的應(yīng)用場景。?
- ?“序列化通知”功能對于設(shè)置默認(rèn)值和驗(yàn)證屬性值合法性非常有用。?
到此這篇關(guān)于.NET 6新特性試用之System.Text.Json功能改進(jìn)的文章就介紹到這了,更多相關(guān) System.Text.Json功能改進(jìn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
.NET的基元類型包括什么及Unmanaged和Blittable類型詳解
這篇文章主要介紹了.NET的基元類型包括什么及Unmanaged和Blittable類型詳解,Unmanaged類型可以理解不涉及托管對象引用的值類型,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06asp.net 動(dòng)態(tài)生成控件并獲取其值
代碼比較簡單,所以不多做解釋了:2009-02-02.NET 6實(shí)現(xiàn)基于JWT的Identity功能方法詳解
在.NET Web API開發(fā)中還有一個(gè)很重要的需求是關(guān)于身份認(rèn)證和授權(quán)的。本文將介紹使用.NET框架自帶的認(rèn)證和授權(quán)中間件去實(shí)現(xiàn)基于JWT的身份認(rèn)證和授權(quán)功能的方法詳解,需要的可以參考一下2022-01-01ASP.NET MVC5網(wǎng)站開發(fā)修改及刪除文章(十)
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC5網(wǎng)站開發(fā)修改及刪除文章,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-09-09.Net Core自動(dòng)化部署之利用docker版jenkins部署dotnetcore應(yīng)用的方法
這篇文章主要給大家介紹了關(guān)于.Net Core自動(dòng)化部署之利用docker版jenkins部署dotnetcore應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06如何使用ASP.NET創(chuàng)建網(wǎng)站并設(shè)計(jì)web頁面
這篇文章主要介紹了如何使用ASP.NET創(chuàng)建網(wǎng)站,幫助大家更好的理解和學(xué)習(xí)使用ASP.NET技術(shù),感興趣的朋友可以了解下2021-04-04win8/8.1系統(tǒng)安裝.net framework 3.5出現(xiàn)0x800F0906代碼錯(cuò)誤的解決方法
這篇文章主要為大家詳細(xì)介紹了win8/8.1系統(tǒng)安裝.net framework 3.5出現(xiàn)0x800F0906代碼錯(cuò)誤的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01ASP.NET?MVC5網(wǎng)站開發(fā)用戶注冊(四)
上一次把基本框架搭建起來了,這次開始整Web部分,終于可以看到界面了小激動(dòng)一下,web項(xiàng)目部分從用戶功能開始,基本有注冊,登錄、注銷、查找、查看、刪除等涉及Member區(qū)域和Manage區(qū)域,供大家參考,具體內(nèi)容如下2015-09-09ASP.NET MVC5驗(yàn)證系列之Remote Validation
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC5驗(yàn)證系列之Remote Validation,感興趣的小伙伴們可以參考一下2016-07-07