共用方式為


.NET 中的 JSON 串行化和還原串行化 - 概觀

System.Text.Json 命名空間提供將 JavaScript 物件表示法 (JSON) 進行序列化和反序列化的功能。 序列化是將物件狀態轉換成可儲存或傳輸表單屬性值的程序。 序列化表單不包含物件相關聯方法的任何資訊。 還原序列化會從序列化形式重新建構物件。

比起廣泛的功能集,System.Text.Json 程式庫設計更強調的是高效能以及低記憶體配置。 內建的 UTF-8 支援可在讀取和寫入編碼為 UTF-8 的 JSON 文字時將程序最佳化,而 UTF-8 是網路資料及磁碟檔案最常用的編碼方式。

程式庫也提供可使用記憶體內部文件物件模型 (DOM) 的類別。 這項功能可讓您隨機存取 JSON 檔案或字串中的項目。

對於 Visual Basic,您可以使用的程式庫部分有一些限制。 如需詳細資訊,請參閱 Visual Basic 支援

如何取得程式庫

若為 .NET Core 3.0 和更新版本,程式庫會內建為共用架構的一部分。 若為 .NET 6 和更新版本,則來源產生功能會內建為共用架構的一部分。

若架構版本早於 .NET Core 3.0,請安裝 System.Text.Json NuGet 套件。 該套件支援下列版本:

  • .NET Standard 2.0 和更新版本
  • .NET Framework 4.6.2 和更新版本
  • .NET 8 和更新版本

命名空間和 API

重要

System.Text.Json 不支援先前可能已使用的下列序列化 API:

反映與來源產生

根據預設,System.Text.Json 會使用反映來收集存取物件屬性所需的中繼資料,以在執行階段進行序列化和還原序列化。 作為替代方式,System.Text.Json 也可以使用 C# 來源產生功能來改善效能、減少私人記憶體用量,以及輔助組件調整,以降低應用程式大小。

如需詳細資訊,請參閱反映與來源產生

安全性資訊

如需了解設計 JsonSerializer 時考量的安全性威脅,以及減輕這類威脅的方式,請參閱 System.Text.Json 威脅模型

執行緒安全

System.Text.Json 序列化程式的設計考慮了執行緒安全性。 實際上,這表示一旦鎖定,JsonSerializerOptions 執行個體就可以安全地跨多個執行緒共用。 JsonDocument 在 .NET 8 和更新版本中,提供 JSON 值不可變且安全執行緒的 DOM 表示法。

其他資源