派生リスト クラスの Json.NET シリアル化のカスタマイズ
概要
クラスを拡張する場合List
リストと派生クラス メンバーの両方をシリアル化するアプローチ
主に 2 つあります。この問題に対処するアプローチ:
Public Property Exposure
1 つのオプションは、リストを公開するパブリック プロパティを派生クラスに作成することです。これにより、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;
カスタム コンバーターを使用した出力例
カスタム コンバーターを使用すると、PagesResult をシリアル化するときに次の JSON 出力が生成されます< ;T>:
{ "PageSize": 10, "PageIndex": 0, "TotalItems": 3, "TotalPages": 1, "Items": [ "foo", "bar", "baz" ] }
このアプローチにより、シリアル化プロセスを実行し、リストと派生クラス メンバーの両方を効果的にシリアル化する問題を解決します。
以上がJson.NET を使用してリストと派生クラス メンバーの両方をシリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。