狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#使用 System.Text.Json 基礎(chǔ)用法

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

前言

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

System.Text.Json

1、概述

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

2、常用的類

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

  • JsonDocument: 提供用于檢查 JSON 值的結(jié)構(gòu)內(nèi)容,而不自動實例化數(shù)據(jù)值的機制;

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


3、序列化

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

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="羅湖區(qū)",                Town= "蓮塘街道",                Detail= "梧桐山公園"            };            // 配置 JsonSerializer 使用的選項 此處配置支持中文不轉(zhuǎn)義            var options = new JsonSerializerOptions            {                // 允許字符通過而不進行轉(zhuǎn)義方面更加寬松                Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping            }            // 將對象序列化為JSON            string json= JsonSerializer.Serialize(address, options);            // 輸出 JSON            Console.WriteLine(json);            //            Console.ReadKey();        }    }}

4、反序列化

JSON 反序列化是將 JSON 格式的文本內(nèi)容轉(zhuǎn)換回 .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 使用的選項 此處配置支持中文不轉(zhuǎn)義            var options = new System.Text.Json.JsonSerializerOptions            {                // 允許字符通過而不進行轉(zhuǎn)義方面更加寬松                Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping            };            // JSON 格式文本內(nèi)容            string jsonString = "{\"City\":\"深圳市\(zhòng)",\"Detail\":\"梧桐山公園\",\"District\":\"羅湖區(qū)\",\"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,    // 關(guān)閉轉(zhuǎn)義,默認情況下,序列化程序會轉(zhuǎn)義所有非 ASCII 字符。即,會將中文替換為 \uxxxx,其中 xxxx 為字符的 Unicode 代碼。    Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,    // 反序列化不區(qū)分大小寫    PropertyNameCaseInsensitive = true,    // 駝峰命名    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,    // 對字典的鍵進行駝峰命名    DictionaryKeyPolicy = JsonNamingPolicy.CamelCase,    // 序列化的時候忽略null值屬性    DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,    // 忽略只讀屬性,因為只讀屬性只能序列化而不能反序列化,所以在以json為儲存數(shù)據(jù)的介質(zhì)的時候,序列化只讀屬性意義不大    IgnoreReadOnlyFields = true,    // 不允許結(jié)尾有逗號的不標準json    AllowTrailingCommas = false,    // 不允許有注釋的不標準json    ReadCommentHandling = JsonCommentHandling.Disallow,    // 允許在反序列化的時候原本應(yīng)為數(shù)字的字符串(帶引號的數(shù)字)轉(zhuǎn)為數(shù)字    NumberHandling = JsonNumberHandling.AllowReadingFromString,    // 處理循環(huán)引用類型    ReferenceHandler = ReferenceHandler.IgnoreCycles,    // 類型轉(zhuǎn)換    Converters =    {        new JsonStringEnumConverter(JsonNamingPolicy.CamelCase)    }};

6、自定義轉(zhuǎn)換器

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

7、解析 JSON

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

using System;using System.Text.Encodings.Web;using System.Text.Json;
namespace Fountain.WinConsole.JSONDemo{    internal class Program    {        static void Main(string[] args)        {            // JSON 文本內(nèi)容            string jsonString = "{\"City\":\"深圳市\(zhòng)",\"Detail\":\"梧桐山公園\",\"District\":\"羅湖區(qū)\",\"Province\":\"廣東省\",\"Town\":\"蓮塘街道\"}";            // 創(chuàng)建 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();        }    }}

小結(jié)

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


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