欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#使用 System.Text.Json 基礎用法

admin
2024年11月7日 8:54 本文熱度 453

前言

JSON(JavaScript Object Notation)是一種基于文本,獨立于語言的輕量級數據交換格式,它易于閱讀和編寫,并且易于機器解析和生成。現已成為各種應用程序之間數據交換和通信的主流數據格式。在 .NET 通過三方庫如 Newtonsoft.Json 或者 System.Text.Json 實現JSON的序列化與反序列化,本文一起了解 System.Text.Json 序列化與反序列化基礎用法。

System.Text.Json

1、概述

System.Text.Json 是 C# 中的一個 JSON 序列化和反序列化庫,從 .NET Core 3.0及更高版本中,通過內置方式提供支持。如果在.NET Framework 4.7及更高版本中,使用可通過NuGet包管理器安裝 System.Text.Json

2、常用的類

  • JsonSeriliazer:提供將對象或值類型序列化為 JSON 以及將 JSON 反序列化為對象或值類型的功能;

  • JsonDocument: 提供用于檢查 JSON 值的結構內容,而不自動實例化數據值的機制;

  • JsonSerializerOptions: 提供與 JsonSerializer 一起使用的選項;


3、序列化

JSON 序列化是將對象或值類型轉化為JSON格式的文本內容的過程。下面是一個簡單的示例:

using System;using System.Text.Encodings.Web;using System.Text.Json;
namespace Fountain.WinConsole.JSONDemo{    internal class Program    {        static void Main(string[] args)        {            // 定義一個對象            Address address = new Address            {                Province = "廣東省",                City = "深圳市",                District="羅湖區",                Town= "蓮塘街道",                Detail= "梧桐山公園"            };            // 配置 JsonSerializer 使用的選項 此處配置支持中文不轉義            var options = new JsonSerializerOptions            {                // 允許字符通過而不進行轉義方面更加寬松                Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping            }            // 將對象序列化為JSON            string json= JsonSerializer.Serialize(address, options);            // 輸出 JSON            Console.WriteLine(json);            //            Console.ReadKey();        }    }}

4、反序列化

JSON 反序列化是將 JSON 格式的文本內容轉換回 .NET 對象或值類型的過程。下面是一個簡單的示例:

using System;using System.Text.Encodings.Web;using System.Text.Json;
namespace Fountain.WinConsole.JSONDemo{    internal class Program    {        static void Main(string[] args)        {            // 配置 JsonSerializer 使用的選項 此處配置支持中文不轉義            var options = new System.Text.Json.JsonSerializerOptions            {                // 允許字符通過而不進行轉義方面更加寬松                Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping            };            // JSON 格式文本內容            string jsonString = "{\"City\":\"深圳市\",\"Detail\":\"梧桐山公園\",\"District\":\"羅湖區\",\"Province\":\"廣東省\",\"Town\":\"蓮塘街道\"}";            // 將 JSON 反序列化為對象            var addr = JsonSerializer.Deserialize<Address>(jsonString);            Console.WriteLine(addr.Province);            // 或            var Address = JsonSerializer.Deserialize<Address>(jsonString, options);            Console.ReadKey();        }    }}

5、配置選項

通過使JsonSerializerOptions類配置選項,告訴JsonSerializer如何序列化和反序列化JSON。下面示例是一些選項使用:

var options = new JsonSerializerOptions{    // 整齊打印    WriteIndented = true,    // 關閉轉義,默認情況下,序列化程序會轉義所有非 ASCII 字符。即,會將中文替換為 \uxxxx,其中 xxxx 為字符的 Unicode 代碼。    Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,    // 反序列化不區分大小寫    PropertyNameCaseInsensitive = true,    // 駝峰命名    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,    // 對字典的鍵進行駝峰命名    DictionaryKeyPolicy = JsonNamingPolicy.CamelCase,    // 序列化的時候忽略null值屬性    DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,    // 忽略只讀屬性,因為只讀屬性只能序列化而不能反序列化,所以在以json為儲存數據的介質的時候,序列化只讀屬性意義不大    IgnoreReadOnlyFields = true,    // 不允許結尾有逗號的不標準json    AllowTrailingCommas = false,    // 不允許有注釋的不標準json    ReadCommentHandling = JsonCommentHandling.Disallow,    // 允許在反序列化的時候原本應為數字的字符串(帶引號的數字)轉為數字    NumberHandling = JsonNumberHandling.AllowReadingFromString,    // 處理循環引用類型    ReferenceHandler = ReferenceHandler.IgnoreCycles,    // 類型轉換    Converters =    {        new JsonStringEnumConverter(JsonNamingPolicy.CamelCase)    }};

6、自定義轉換器

System.Text.Json 提供了JSON序列化類創建自定義轉換器,轉換器是一種將對象或值與 JSON 相互轉換的類。我們可以編寫自定義轉換器來替代內置轉換器的默認行為。(本文不展開詳細的描述

7、解析 JSON

使用 JsonDocument 類可對JSON文本內容進行解析。下面是一個簡單的示例:

using System;using System.Text.Encodings.Web;using System.Text.Json;
namespace Fountain.WinConsole.JSONDemo{    internal class Program    {        static void Main(string[] args)        {            // JSON 文本內容            string jsonString = "{\"City\":\"深圳市\",\"Detail\":\"梧桐山公園\",\"District\":\"羅湖區\",\"Province\":\"廣東省\",\"Town\":\"蓮塘街道\"}";            // 創建 JsonDocument 對象            using (JsonDocument jsondocument = JsonDocument.Parse(jsonString))            {                var rootElement = jsondocument.RootElement;                //                var city = rootElement.GetProperty("City").GetString();                Console.WriteLine(city);                //                var Detail = rootElement.GetProperty("Detail").GetString();                Console.WriteLine(Detail);            }            Console.ReadKey();        }    }}

小結

以上是C#使用System.Text.Json序列化與反序列化基礎用法,其使用還是比較容易的。希望本文對您有所收獲,如有不到之處,請多多包涵。


該文章在 2024/11/7 10:31:27 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved