首頁 >後端開發 >C++ >如何使用 Json.NET 序列化清單和衍生類別成員?

如何使用 Json.NET 序列化清單和衍生類別成員?

Patricia Arquette
Patricia Arquette原創
2025-01-07 13:01:41882瀏覽

How Can I Serialize Both a List and Derived Class Members Using Json.NET?

為衍生列表類別自訂Json.NET 序列化

簡介

擴充類別🎜>簡介時派生自List,處理以下序列化可能具有挑戰性派生類別中的列表和其他成員。預設情況下,Json.Net 將 IEnumerable 實作視為數組,並在反序列化時僅序列化列表。

序列化清單和衍生類別成員的方法

主要有兩種解決此問題的方法:

公共財產暴露

一種選擇是在衍生類別中建立公開清單的公共屬性。透過這樣做,Json.Net 將識別該屬性並序列化它和衍生類別成員。但是,如果清單只能在內部訪問,則這種方法可能會帶來不必要的複雜性。

自訂 JsonConverter

或者,可以實作自訂 JsonConverter 來控制序列化過程。這允許更靈活地定義所需的序列化行為。以下是 PagedResult 的轉換器範例:

public class PagedResultConverter<T> : JsonConverter
{
    // ... Implementation ...
}

在轉換器內,您可以獨立控制清單和衍生類別成員的序列化和反序列化。

自訂 JsonConverter 的使用

要使用自訂轉換器,它必須包含在 JsonSerializerSettings中:

JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Converters.Add(new PagedResultConverter<string>());
settings.Formatting = Formatting.Indented;

使用自訂轉換器的範例輸出

使用自訂轉換器後,序列化 PagedResult 時會產生下列 JSON 輸出< ;T>:

{
  "PageSize": 10,
  "PageIndex": 0,
  "TotalItems": 3,
  "TotalPages": 1,
  "Items": [
    "foo",
    "bar",
    "baz"
  ]
}

這種方法可以更好地控制序列化過程並有效解決序列化列表和派生類別成員的問題。

以上是如何使用 Json.NET 序列化清單和衍生類別成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn