1. ホーム
  2. c#

[解決済み] JavaScriptSerializer - 列挙型を文字列としてJSONシリアライズする

2022-03-19 21:07:03

質問

クラスがあり、そのクラスには enum プロパティを使用してオブジェクトをシリアライズすると JavaScriptSerializer この場合、私の json の結果には、列挙型の整数値が含まれています。 string name"です。 として列挙を取得する方法はありますか? string を作成する必要はありません。 JavaScriptConverter ? もしかしたら、このような属性で enum の定義、またはオブジェクトのプロパティに使用できますか?

例として

enum Gender { Male, Female }

class Person
{
    int Age { get; set; }
    Gender Gender { get; set; }
}

希望するJSONの結果。

{ "Age": 35, "Gender": "Male" }

理想的には、組み込みの.NETフレームワークのクラスで答えを探していますが、可能でない場合は、代替品(Json.netなど)を歓迎します。

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

特別に使用できる属性はありません。 JavaScriptSerializer シリアライズ enums を文字列表現ではなく、数値に変換します。をシリアライズするためには、カスタムシリアライズを使用する必要があります。 enum を数値ではなく名前として使用します。


の代わりにJSON.Netが使えるのであれば、それを利用することができます。 JavaScriptSerializer を見るより この質問に対する回答 が提供する オメルバハリ : JSON.netはこのユースケースをカバーしています(属性の [JsonConverter(typeof(StringEnumConverter))] その他、.net の内蔵シリアライザーでは扱えないものが多数あります。 シリアライザーの特徴と機能を比較したリンクはこちらです。 .