成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

.NET 9 中 System.Text.Json 庫(kù)的全面升級(jí)與實(shí)踐指南

開(kāi)發(fā) 前端
.NET 9 為 System.Text.Json 庫(kù)帶來(lái)了多項(xiàng)重要改進(jìn),使其在 JSON 序列化和反序列化方面更加強(qiáng)大、靈活和高效。通過(guò)本文的示例代碼,開(kāi)發(fā)者可以更好地理解和應(yīng)用這些新特性,從而提升開(kāi)發(fā)效率和代碼質(zhì)量。?

在 .NET 9 中,System.Text.Json 庫(kù)得到了顯著增強(qiáng),為開(kāi)發(fā)者提供了更強(qiáng)大和靈活的 JSON 處理能力。這些改進(jìn)主要集中在 JSON 架構(gòu)支持、智能應(yīng)用功能以及序列化和反序列化過(guò)程的自定義選項(xiàng)上。本文將詳細(xì)介紹這些新特性,并提供示例代碼,幫助開(kāi)發(fā)者更好地理解和應(yīng)用這些功能。

JSON 架構(gòu)導(dǎo)出器

在 .NET 9 中,新增了 JsonSchemaExporter 類(lèi),使開(kāi)發(fā)者能夠從 .NET 類(lèi)型中提取 JSON 架構(gòu)文檔。這一特性有助于驗(yàn)證和文檔化 JSON 數(shù)據(jù)結(jié)構(gòu),確保應(yīng)用程序之間的一致性。

示例代碼 

using System.Text.Json;
using System.Text.Json.Schema;

namespace AppTextJson
{
    publicclass Employee
    {
        publicint Id { get; set; }
        publicstring Name { get; set; }
        publicstring Position { get; set; }
    }

    internal class Program
    {
        static void Main(string[] args)
        {
            var options = new JsonSerializerOptions
            {
                WriteIndented = true
            };

            string jsonSchema = JsonSerializer.Serialize(new Employee(), options);
            Console.WriteLine(jsonSchema);

            Console.ReadKey();
        }
    }
}

輸出示例 

圖片圖片

可空引用類(lèi)型支持

為了與 C# 的可空引用類(lèi)型注釋保持一致,System.Text.Json 現(xiàn)在提供了 RespectNullableAnnotations 選項(xiàng)。當(dāng)啟用時(shí),序列化和反序列化過(guò)程中會(huì)強(qiáng)制執(zhí)行不可空引用類(lèi)型,若不可空屬性被賦值為 null,則會(huì)拋出異常。

示例代碼 

using System.Text.Json;
using System.Text.Json.Schema;
using System.Text.Json.Serialization;

namespace AppTextJson
{
    publicclass Product
    {
        publicstring Name { get; set; } = null!;
        public decimal Price { get; set; }
    }

    internal class Program
    {
        static void Main(string[] args)
        {
            var options = new JsonSerializerOptions
            {
                DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
            };

            var product = new Product { Name = null, Price = 9.99m };
            string json = JsonSerializer.Serialize(product, options);
            Console.WriteLine(json);
            Console.ReadKey();
        }
    }
}

輸出示例 

圖片圖片

自定義序列化縮進(jìn)

System.Text.Json 引入了自定義縮進(jìn)選項(xiàng),允許開(kāi)發(fā)者指定用于縮進(jìn)的字符和大小,以滿(mǎn)足特定的格式要求。這有助于使 JSON 輸出更易讀。

示例代碼 

var options = new JsonSerializerOptions
{
    WriteIndented = true
};

var json = JsonSerializer.Serialize(new { Name = "Alice", Age = 30 }, options);
Console.WriteLine(json);

輸出示例 

圖片圖片

JsonSerializerOptions.Web

JsonSerializerOptions.Web 提供了一組預(yù)定義的選項(xiàng),專(zhuān)為 Web 應(yīng)用程序量身定制。這包括屬性名稱(chēng)的 camelCase 格式和靈活的數(shù)字處理,使 JSON 序列化符合常見(jiàn)的 Web API 實(shí)踐。

示例代碼 

internal class Program
{
    static void Main(string[] args)
    {
        var options = new JsonSerializerOptions(JsonSerializerDefaults.Web);
        var json = JsonSerializer.Serialize(new { FirstName = "John", LastName = "Doe" }, options);
        Console.WriteLine(json);
        Console.ReadKey();
    }
}

輸出示例 

圖片圖片

JsonObject 屬性排序

JsonObject 類(lèi)現(xiàn)在允許開(kāi)發(fā)者控制 JSON 對(duì)象中屬性的順序。這在某些序列化場(chǎng)景中尤其有用,或者在與對(duì)屬性順序敏感的系統(tǒng)交互時(shí)。

示例代碼 

internal class Program
{
    static void Main(string[] args)
    {
        var options = new JsonSerializerOptions
        {
            PropertyNamingPolicy = JsonNamingPolicy.CamelCase
        };

        var json = JsonSerializer.Serialize(new { LastName = "Doe", FirstName = "John" }, options);
        Console.WriteLine(json);
        Console.ReadKey();
    }
}

輸出示例 

圖片圖片

JsonElement 深度比較方法

在 .NET 9 中,System.Text.Json 庫(kù)引入了 JsonElement.DeepEquals 方法,使得兩個(gè) JsonElement 實(shí)例之間的深度比較變得更加簡(jiǎn)單。該方法可以判斷兩個(gè) JSON 元素在結(jié)構(gòu)和語(yǔ)義上是否相同。

示例代碼 

internal class Program
{
    static void Main(string[] args)
    {
        var json1 = JsonDocument.Parse("{\"name\":\"Alice\"}").RootElement;
        var json2 = JsonDocument.Parse("{\"name\":\"Alice\"}").RootElement;
        Console.WriteLine(JsonElement.DeepEquals(json1, json2));
        Console.ReadKey();
    }
}

輸出示例 

圖片圖片

自定義枚舉成員名稱(chēng)

在 .NET 9 中,System.Text.Json 庫(kù)引入了 JsonStringEnumMemberName 屬性,允許開(kāi)發(fā)者自定義單個(gè)枚舉成員的 JSON 表示。這一增強(qiáng)提供了更大的靈活性,尤其是在需要特定命名約定或格式的場(chǎng)景中。

示例代碼 

using System.Text.Json;
using System.Text.Json.Schema;
using System.Text.Json.Serialization;

namespace AppTextJson
{
    [JsonConverter(typeof(JsonStringEnumConverter))]
    publicenum Status
    {
        [JsonStringEnumMemberName("Ready For Dev")]
        ReadyForDev,
        [JsonStringEnumMemberName("In Progress")]
        InProgress,
        [JsonStringEnumMemberName("Completed")]
        Completed
    }

    internal class Program
    {
        static void Main(string[] args)
        {
            var status = Status.ReadyForDev;
            string json = JsonSerializer.Serialize(status);
            Console.WriteLine(json);
            Console.ReadKey();
        }
    }
}

輸出示例 

圖片圖片

總結(jié)

.NET 9 為 System.Text.Json 庫(kù)帶來(lái)了多項(xiàng)重要改進(jìn),使其在 JSON 序列化和反序列化方面更加強(qiáng)大、靈活和高效。通過(guò)本文的示例代碼,開(kāi)發(fā)者可以更好地理解和應(yīng)用這些新特性,從而提升開(kāi)發(fā)效率和代碼質(zhì)量。

責(zé)任編輯:武曉燕 來(lái)源: 技術(shù)老小子
相關(guān)推薦

2024-06-20 12:19:59

2022-01-07 10:35:19

.NET序列程序

2025-03-03 02:25:00

.NET 9JSON序列化

2021-04-14 07:35:12

Json格式化日期

2023-07-24 16:08:17

測(cè)試開(kāi)發(fā)

2017-03-22 09:44:04

DevOps轉(zhuǎn)型陷阱實(shí)踐

2025-01-03 08:29:53

2024-02-22 15:35:05

2023-08-09 10:43:02

.NET微軟

2025-01-22 08:19:34

2025-01-10 00:32:48

2023-10-23 10:48:30

Golang數(shù)組

2018-01-10 09:53:15

京東數(shù)據(jù)庫(kù)運(yùn)維經(jīng)驗(yàn)

2012-09-21 16:19:43

IBM大數(shù)據(jù)

2023-09-12 09:45:54

Java數(shù)據(jù)庫(kù)

2024-10-17 16:09:25

2024-07-01 00:00:06

ASP.NET開(kāi)源

2023-06-26 07:26:50

System.Net網(wǎng)絡(luò)通信基礎(chǔ)接口

2023-11-01 18:58:43

云棲大會(huì)阿里云瑤池?cái)?shù)據(jù)庫(kù)

2020-05-06 09:11:50

DevOps
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美aⅴ| 9久久精品 | 日韩一区中文字幕 | 成人免费视频播放 | 亚洲在线免费观看 | 91精品久久久久久久久 | 欧美日韩综合一区 | 色婷婷精品国产一区二区三区 | 亚洲国产黄色av | 亚洲综合视频 | 欧美激情在线观看一区二区三区 | 日韩在线播放中文字幕 | 天天操综合网 | 欧美一级在线观看 | 日韩福利视频 | 亚洲精品久久视频 | 亚洲精品丝袜日韩 | 精品亚洲91 | 99re视频在线观看 | 欧美日本免费 | 日韩精品视频中文字幕 | 国产高清无av久久 | 国产高清自拍视频在线观看 | 国产99久久精品一区二区永久免费 | 国产视频第一页 | 久久成人国产精品 | 久久久成人免费一区二区 | 欧美一级观看 | 色综合天天天天做夜夜夜夜做 | 97国产精品 | 国产精品久久久久久久久久久久久 | 人人射人人| 91久久| 色综合久久伊人 | 国产精品乱码一区二三区小蝌蚪 | 成人在线观看网站 | 午夜av电影 | 91精品国产91久久综合桃花 | 天天操操操操操 | 国产韩国精品一区二区三区 | zzzwww在线看片免费 |