Json.Net シリアル化で辞書キーを保持する方法
Json.Net は一般的に使用されるシリアル化ライブラリですが、辞書を含むオブジェクトをシリアル化する場合、辞書キーを保持する方法の問題が発生する可能性があります。
例を見てみましょう:
<code class="language-c#">public class Test { public string X { get; set; } public Dictionary<string, string> Y { get; set; } }</code>
このオブジェクトを次の JSON 形式にシリアル化するとします:
<code class="language-json">{ "X" : "value", "key1": "value1", "key2": "value2" }</code>
ここでは、辞書キー (「key1」と「key2」) を JSON 出力に明示的に含める必要があります。
JsonExtensionData 属性を使用して辞書を保持します
Json.Net 5.0.5 以降を使用している場合は、簡単な解決策があります。 [JsonExtensionData]
属性を使用すると、ディクショナリを親オブジェクトのシリアル化された表現の一部として昇格できます。属性を辞書属性に適用するだけです:
<code class="language-c#">public class Test { public string X { get; set; } [JsonExtensionData] public Dictionary<string, object> Y { get; set; } }</code>
この調整により、辞書のキーと値のペアが親オブジェクトの JSON 表現にシームレスに統合されます。さらに、このメカニズムは双方向で機能するため、クラス メンバーに直接マップされない他の JSON プロパティをディクショナリに逆シリアル化できるようになります。
以上がJson.Net でシリアル化するときに辞書キーを保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。