Json.Net での派生リスト クラスのシリアル化の課題を理解する
List
ジレンマの克服: 2 つのアプローチ
これを解決するには、2 つのオプションがあります:
オプション1: リストをパブリック プロパティとして公開する
派生クラスでパブリック プロパティを作成して、リストを公開できます。たとえば、PagesResult
オプション 2: カスタム JsonConverter を使用する
または、カスタム JsonConverter を作成して処理することもできます。希望通りのシリアル化。 PagedResult
class PagedResultConverter<T> : JsonConverter { // Override methods for writing and reading JSON // For brevity, only the `WriteJson` method is shown here public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { PagedResult<T> result = (PagedResult<T>)value; // Create a JSON object to represent the PagedResult // Add both derived class members and list items to the object // Write the object to the writer } }
このコンバーターでは、シリアル化プロセスを完全に制御し、派生クラスのメンバーとリストの両方が JSON 出力に含まれるようにします。
デモと結論
これは、動作中のカスタム コンバーター:
// Assume a `PagedResult<string>` class definition JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Converters.Add(new PagedResultConverter<string>()); string json = JsonConvert.SerializeObject(result, settings);
いずれかのアプローチを採用すると、派生クラスのメンバーとリストの両方を効果的にシリアル化し、Json.Net でのシリアル化要件を満たすことができます。
以上がJson.Netで派生リストクラスをシリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。