Json.Net: オブジェクトではなく値としてプロパティを処理する
JSON.Net を使用して車や車などの複雑なオブジェクトを表す場合はじめに説明した StringId クラスでは、プロパティをネストされたオブジェクトではなくプレーンな値としてシリアル化/逆シリアル化することが望ましい場合があります。この記事では、これを実現するための 2 つのアプローチ、型コンバーターと JSON コンバーターを説明します。
型コンバーター
StringId クラス専用の型コンバーターを追加すると、JSON.Net で次のことが可能になります。途中で文字列との間で変換します。シリアル化/逆シリアル化:
[TypeConverter(typeof(StringIdConverter))] class StringId { public string Value { get; set; } } class StringIdConverter : TypeConverter { // ... (Implement CanConvertFrom, CanConvertTo, ConvertFrom, and ConvertTo) }
JSON コンバーター
代わりに、JSON コンバーターを使用すると、変換プロセスをより詳細に制御できます。カスタム JSON コンバーターを StringId クラスに適用することで、シリアル化および逆シリアル化ロジックを明示的に定義できます。
[JsonConverter(typeof(StringIdConverter))] class StringId { public string Value { get; set; } } class StringIdConverter : JsonConverter { // ... (Implement CanConvert, ReadJson, and WriteJson) }
グローバル コンバーター構成
JSON コンバーターも次のように定義できます。グローバルに設定されます。たとえば、StringId 型のすべてのプロパティを値として処理するには:
JsonConvert.DefaultSettings = () => new JsonSerializerSettings { Converters = { new StringIdConverter() } };
追加の考慮事項
以上がJSON.Net プロパティをオブジェクトではなく値としてシリアル化/逆シリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。