1. ホーム
  2. c#

[解決済み] すべての列挙型に StringEnumConverter を適用するよう Json.Net にグローバルに指示する方法

2023-06-20 18:56:39

質問

私はjson.netで列挙型をその文字列表現にデシリアライズしたい、またはその逆をしたいのです。私が理解できた唯一の方法は、フレームワークにその StringEnumConverter を適用するようにフレームワークに伝えるために私が理解できた唯一の方法は、このように問題のプロパティをアノテートすることです。

[JsonConverter(typeof(StringEnumConverter))]
public virtual MyEnums MyEnum { get; set; }

しかし、私の使用例では、json.netをグローバルに設定し、すべての列挙が、(de)シリアライズされるようにする方がはるかに便利でしょう。 StringEnumConverter を使用してシリアライズされ、余分なアノテーションを必要としません。

そうする方法はありますか、例えば、カスタムの JsonSerializerSettings ?

どのように解決するのですか?

を追加します。 StringEnumConverter を追加します。 JsonSerializerSettings Converters コレクションに追加しました。

ドキュメンテーションです。 JsonConvertersでシリアライズする。


シリアライザにキャメルケーシングを使用させたい場合は、こちらも設定します。

SerializerSettings.Converters.Add(
    new StringEnumConverter { CamelCaseText = true });

これは SomeValuesomeValue .