2017-01-30 13 views
0

列挙型の配列を返す必要があるAPIを作成しています。私はWebAPIでJSON.NETを使用していますが、StringEnumConverterは列挙型のプロパティを列挙型の値に変換するのに十分ですが、列挙型の配列である結果を変換するのではなく、単なる整数値を返します。列挙型の配列をJSON.NETの文字列値にシリアル化します

私のエンドポイントは次のようになりますのであれば:

[RoutePrefix("Items")] 
public class ItemsController : ApiController 
{ 
    [HttpGet][Route("")] 
    public IHttpActionResult Get() 
    { 
     var items = Enum.GetValues(typeof(Items)) 
         .Cast<Items>() 
         .ToList() 
     return Ok(items); 
    } 
} 

public enum Items 
{ 
    First = 0, 
    Second = 1, 
    Third = 2 
} 

その後GET /Itemsへの呼び出しは、現在[ 0, 1, 2 ]を返します。返信したいのは[ "First", "Second", "Third" ]です。私は何をする必要がありますする必要はありませんが、結果周りのラッパーを入れて

それは技術的に働くかもしれないが、このエンドポイントは、APIの残りの部分と矛盾していることになります。これは、
public class ItemsList 
{ 
    [JsonProperty("Items", ItemConverterType=typeof(StringEnumConverter))] 
    public List<Items> Items { get;set; 
} 

結果のラッパーを必要としません。

答えて

1

私だけRestSharpクライアント上で、それを使用していた

public static void Register(HttpConfiguration config) 
{ 
     config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter()); 

      //........................................... 
} 
+0

私はすでに、その後、私はダブルチェックすべきであると思ったことをやっていたと言う、見ようとしていた、あなたのWebApiConfigにStringEnumConverterを追加しようと、 API自体ではありません。ダー! –

関連する問題