21

私は私のプロジェクトで次の列挙型を持っています

public enum CameraAccessMethod
{
    Manual = 0,
    Panasonic = 1,
    Axis = 2,
    AirCam = 3
}

さまざまなシナリオに応じて json または XML にシリアル化されるオブジェクトがあり、オブジェクトのプロパティの 1 つはタイプCameraAccessMethodです。私が抱えている問題は、このプロパティが XML にシリアル化されると、列挙値 (Manual、Panasonic、Axis、Aircam) の文字列表現が得られることですが、JSON では数値 (0,1,2,3) にシリアル化されます。この不一致を回避するにはどうすればよいですか? JSONシリアライズでも文字列が欲しい。

4

3 に答える 3

36

StringEnumConvertWeb API RC以降、次の期間中に既存のJsonMediaTypeFormatterコンバーターコレクションにを適用することで列挙型の文字列表現を取得できますApplication_Start()

var jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
var enumConverter = new Newtonsoft.Json.Converters.StringEnumConverter();
jsonFormatter.SerializerSettings.Converters.Add(enumConverter);
于 2012-06-26T12:12:44.987 に答える
1

Json.NET に基づくフォーマッタを使用するように切り替えると、これを簡単に実現できます (これは、次の ASP.NET Web API のドロップですぐに出荷されます)。詳細については、この SO 投稿を参照してください。

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

于 2012-05-22T05:41:19.123 に答える