C#面:簡單介紹 序列化 和 反序列化

序列化:

是將對象轉換為可保持或可傳輸的形式的過程。

.NET 具有以下序列化技術:

  • 二進制序列化保持類型保真,這對于多次調用應用程序時保持對象狀態非常有用。 例如,通過將對象序列化到剪貼板,可在不同的應用程序之間共享對象。 您可以將對象序列化到流、磁盤、內存和網絡等。 遠程處理使用序列化,“按值”在計算機或應用程序域之間傳遞對象。
  • XML 和 SOAP 序列化只序列化公共屬性和字段,并且不保持類型保真。 當您希望提供或使用數據而不限制使用該數據的應用程序時,這一點非常有用。 由于 XML 是開放式的標準,因此它對于通過 Web 共享數據來說是一個理想選擇。 SOAP 同樣是開放式的標準,這使它也成為一個理想選擇。
  • JSON 序列化只序列化公共屬性,并且不保持類型保真。 JSON 是開放式的標準,對于通過 Web 共享數據來說是一個理想選擇。

用到的類:

System.Runtime.Serialization
包含可用于序列化和反序列化對象的類。

System.Xml.Serialization
包含可用于將對象序列化為 XML 格式的文檔或流的類。

System.Text.Json
包含可用于將對象序列化為 JSON 格式的文檔或流的類。

反序列化:

是將流轉換為對象的過程。

這兩個過程一起保證能夠存儲和傳輸數據。

注意:

  1. 如果一個類可以序列化,它的子類和包含的各成員對象不一定都可以序列化。如果一個類可以序列化,但其子類或包含的成員對象不滿足序列化條件,那么在序列化過程中可能會拋出異常。因此,在設計可序列化的類繼承結構時,需要確保所有相關的類都滿足序列化條件。
  2. 若要忽略單個屬性,請使用 [JsonIgnore] 特性。

示例:?

JSON序列化示例:

public class Person
{public string? Name { get; set; }public int Age { get; set; }public DateTimeOffset Date { get; set; }
}
internal class Program
{static void Main(string[] args){//創建一個Person類的對象Person person = new Person{Name = "大毛",Age = 10,Date = DateTime.Now};//序列化為JSONstring jsonString = JsonSerializer.Serialize(person);Console.WriteLine(jsonString);//{"Name":"\u5927\u6BDB","Age":10,"Date":"2024-03-03T17:01:29.4062255+08:00"}}
}

JSON反序列化示例:

public class Person
{public string? Name { get; set; }public int Age { get; set; }public DateTimeOffset Date { get; set; }
}
internal class Program
{static void Main(string[] args){string jsonString = @"{""Name"":""\u5927\u6BDB"",""Age"":10,""Date"":""2024-03-03T17:01:29.4062255+08:00""}";Person? person = JsonSerializer.Deserialize<Person?>(jsonString);Console.WriteLine($"姓名:{person?.Name}");Console.WriteLine($"年齡:{person?.Age}");Console.WriteLine($"創建時間:{person?.Date}");//姓名: 大毛//年齡:10//創建時間:2024 - 03 - 03 17:01:29 + 08:00

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718658.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718658.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718658.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linxu自動化構建工具make/Makefile究竟時什么?

Linxu自動化構建工具make/Makefile究竟時什么&#xff1f; 一、簡介二、makefile文件制作&#xff08;簡潔版&#xff09;2.1 源文件2.2 makefile如何制作2.2.1 依賴關系、依賴方法2.2.3 偽目標&#xff08;清理文件資源&#xff09; 三、make/Makefile自動化原理3.1 偽目標為什…

SpringBoot+Vue實現el-table表頭篩選排序(附源碼)

&#x1f468;?&#x1f4bb;作者簡介&#xff1a;在笑大學牲 &#x1f39f;?個人主頁&#xff1a;無所謂^_^ ps&#xff1a;點贊是免費的&#xff0c;卻可以讓寫博客的作者開心好幾天&#x1f60e; 前言 后臺系統對table組件的需求是最常見的&#xff0c;不過element-ui的el…

Grpc項目集成到java方式調用實踐

背景&#xff1a;由于項目要對接到grcp 的框架&#xff0c;然后需要對接老外的東西&#xff0c;還有簽名和證書剛開始沒有接觸其實有點懵逼。 gRPC 是由 Google 開發的高性能、開源的遠程過程調用&#xff08;RPC&#xff09;框架。它建立在 HTTP/2 協議之上&#xff0c;使用 …

D7805 正電壓穩壓電路應用——體積小,成本低,性能好

D7805 構成的 5V 穩壓電源為輸出電壓5V&#xff0c;輸出電流 1000mA 的穩壓電源它由濾波電容 C1,C3,防止自激電容 C2、C3 和一只固定三端穩壓器&#xff08;7805&#xff09;后級加 LC 濾波極為簡潔方便地搭成&#xff0c;輸入直流電壓范圍為 7~35V&#xff0c;此直流電壓經過D…

yolov8-更換卷積模塊-ContextGuidedBlock_Down

源碼解讀 class ContextGuidedBlock_Down(nn.Module):"""the size of feature map divided 2, (H,W,C)---->(H/2, W/2, 2C)"""def __init__(self, nIn, dilation_rate2, reduction16):"""args:nIn: the channel of input fea…

Hack The Box-Bizness

目錄 信息收集 nmap dirsearch WEB Get shell 提權 get user flag get root flag 信息收集 nmap 端口掃描┌──(root?ru)-[~/kali/hackthebox] └─# nmap -p- 10.10.11.252 --min-rate 10000 -oA port Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-04 1…

實測VLLM的加速效果

為了測試vllm的并行加速效果&#xff0c;采用同樣的5個提問&#xff0c;編寫兩個不同的python腳本&#xff0c;分別是compare_vllm.py和compare_chatglm3.py&#xff0c;其中compare_vllm.py采用vllm加速。 服務器參數&#xff1a; 操作系統ubuntu 22.04CPUi7 14700k內存dd5 …

hive中常見參數優化總結

1.with as 的cte優化&#xff0c;一般開發中習慣使用with as方便閱讀&#xff0c;但如果子查詢結果在下游被多次引用&#xff0c;可以使用一定的參數優化手段減少表掃描次數 默認set hive.optimize.cte.materialize.threshold-1;不自動物化到內存&#xff0c;一般可以設置為 se…

力扣 第 387 場周賽 解題報告 | 珂學家 | 離散化樹狀數組 + 模擬場

前言 整體評價 手速場模擬場&#xff0c;思路和解法都蠻直接的。 所以搞點活 如果T2&#xff0c;如果不固定左上角&#xff0c;批量查詢某個點為左上角&#xff0c;求滿足總和 ≤ k \le k ≤k的子矩陣個數 如果T2&#xff0c;如果不固定左上角&#xff0c;求總和 ≤ k \le k…

Spring的Bean的生命周期 | 有圖有案例

Spring的Bean的生命周期 Spring的Bean的生命周期整體過程實例化初始化服務銷毀循環依賴問題 完整生命周期演示 Spring的Bean的生命周期 Spring Bean的生命周期&#xff1a;從Bean的實例化之后&#xff0c;通過反射創建出對象之后&#xff0c;到Bean稱為一個完整的對象&#xf…

EXPLAIN:mysql 執行計劃分析詳解

目錄 EXPLAIN命令 查看執行計劃 分析執行計劃 優化查詢 EXPLAIN中的 type 列類型 在MySQL中&#xff0c;你可以使用EXPLAIN命令來生成查詢的執行計劃。EXPLAIN命令可以顯示MySQL如何使用鍵來處理SELECT和DELETE語句&#xff0c;以及INSERT或UPDATE語句的WHERE子句。這對于…

SRS Stack提供的鑒權、私人直播間、多平臺轉播、錄制等高級功能的具體使用方法是什么?

SRS Stack提供的鑒權、私人直播間、多平臺轉播、錄制等高級功能的具體使用方法是什么&#xff1f; 鑒權功能&#xff1a;SRS Stack支持通過系統配置中的OpenAPI獲取Bearer鑒權&#xff0c;并可以嘗試HTTP API。用戶可以通過點擊網頁上的按鈕請求HTTP API&#xff0c;或者使用cu…

快上車:什么是人工智能?人工智能和普通程序的區別

什么是人工智能&#xff1f; 雖然AI歷史很悠久&#xff0c;上個世紀50年代就有各種概念&#xff0c;但是發展很慢。第一次對人類的沖擊就是1997年IBM深藍擊敗國際象棋世界冠軍&#xff0c;引起了人們的廣泛關注&#xff0c;之后又銷聲匿跡。突然間2016人工智能alphaGO戰勝了圍…

具身智能計算系統,機器人時代的 Android | 新程序員

【導讀】具身智能作為一種新興的研究視角和方法論&#xff0c;正在刷新我們對智能本質及其發展的理解&#xff1a;傳統的 AI 模型往往將智能視為一種獨立于實體存在的抽象能力&#xff0c;而具身智能則主張智能是實體與其環境持續互動的結果。 本文深度剖析了具身智能計算系統…

【CSS】初學了解Grid布局

目錄 什么是Grid布局如何開始使用Grid布局Grid容器的屬性Grid項目的屬性舉個例子 什么是Grid布局 Grid布局是一種二維的布局系統&#xff0c;它允許我們在水平和垂直方向上同時控制網格中的項目位置。通過將頁面劃分為行和列&#xff0c;我們可以輕松地創建出復雜的布局結構&a…

程序員如何選擇職業賽道?

一、自我評估與興趣探索 程序員選擇職業賽道時&#xff0c;可以考慮以下幾個關鍵因素&#xff1a; 1、興趣與熱情&#xff1a;首先要考慮自己的興趣和熱情&#xff0c;選擇符合個人喜好和激情的領域&#xff0c;能夠激勵自己持續學習和進步。 2、技術能力&am…

2.python72變筆記(自用未修改版)

以前寫的python筆記 1.二進制與字符編碼 #8bit&#xff08;位&#xff09;1byte&#xff08;字節&#xff09; #1024byte 1KB 千字節 #1024KB 1MB 兆字節 #1024MB 1TB 太字節 print(chr(0b100111001010000)) print(ord("陳")) #ord 十進制 #無論英語還是漢語在計算…

mysql5.7配置主從

原理&#xff1a; MySQL主從復制的工作原理如下:1. 主服務器產生Binlog日志當主服務器的數據庫發生數據修改操作時,如INSERT、UPDATE、DELETE語句執行,主服務器會記錄這些操作的日志信息到二進制日志文件中。2. 從服務器讀取Binlog日志 從服務器會向主服務器發送請求,主服務器把…

微信小程序開發學習筆記《18》uni-app框架-網絡請求與輪播圖

微信小程序開發學習筆記《18》uni-app框架-網絡請求 博主正在學習微信小程序開發&#xff0c;希望記錄自己學習過程同時與廣大網友共同學習討論。建議仔細閱讀uni-app對應官方文檔 一、下載網絡請求包 這個包是以前黑馬程序員老師寫的一個包&#xff0c;跟著課程學習&#x…

Open3D(C++) 指定點數的體素濾波

目錄 一、算法原理1、算法過程2、參考文獻二、代碼實現三、結果展示本文由CSDN點云俠原創,原文鏈接。如果你不是在點云俠的博客中看到該文章,那么此處便是不要臉的爬蟲與GPT。 一、算法原理 1、算法過程 對于數據量較大的點云,在后期進行配準時會影響計算效率。而體素格網…