1. ホーム
  2. c#

Web APIで匿名型を返す

2023-09-06 02:52:08

質問

MVCを使用しているとき、アドホックJsonを返すのは簡単でした。

return Json(new { Message = "Hello"});

新しいWeb APIでこの機能を求めています。

public HttpResponseMessage<object> Test()
{    
   return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK);
}

のように例外を投げます。 DataContractJsonSerializer は無名型を扱えないため、例外が発生します。

これを次のように置き換えています。 JsonNetFormatter に基づいて Json.Net . これは

 public object Test()
 {
    return new { Message = "Hello" };
 }

を返さないのであれば、Web API を使う意味がないと思います。 HttpResponseMessage を返さないのであれば、バニラMVCにこだわった方が良い。もし私が使おうとしたら

public HttpResponseMessage<object> Test()
{
   return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK);
}

をシリアライズしています。 HttpResponseMessage .

の中で無名型を返せるような解決策をどなたか教えていただけませんか? HttpResponseMessage ?

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

これはベータ版では動作しませんが、最新のビット版では動作します (ビルド元は http://aspnetwebstack.codeplex.com からビルドされます) ので、おそらく RC ではこの方法が採用されるでしょう。次のようにします。

public HttpResponseMessage Get()
{
    return this.Request.CreateResponse(
        HttpStatusCode.OK,
        new { Message = "Hello", Value = 123 });
}