0

Web API を文書化するために、swagger ui プラグインを使用しています。次のような JSON オブジェクトを返したい:

{"Person": {
         "Id": 1,
         "Name": "John",
         "address": {
              "Street": "ABC",
              "City": "Penrith",
              "PostCode": 2034,
              "State": "NSW"
             },
         "DOB": "2013-11-11T00:00:00"
 }
}

Person オブジェクト名に注意してください。

次のコードでこれを行うことができます:

 public HttpResponseMessage Get(int id)
    {

        Person person =  new Person { Id = 1, Name = "John", DOB = new DateTime(2013, 11, 11), address = new Address { City = "Penrith", State = "NSW", PostCode = 2034, Street = "ABC" } } ;

        return Request.CreateResponse(HttpStatusCode.Accepted, new { Person = person });
    }

残念ながら、戻り値の型は Person 自体ではなく HttpResponseMessage であるため、Swagger はモデルを HttResponseMessage として表示するだけです。それは私が望むものではありません。

戻り値の型を Person に変更して person オブジェクトを返すと、JSON 戻り値で Person オブジェクト名を取得できません。それだけを返します-

{
     "Id": 1,
     "Name": "John",
     "address": {
          "Street": "ABC",
          "City": "Penrith",
          "PostCode": 2034,
          "State": "NSW"
         },
     "DOB": "2013-11-11T00:00:00"

}

Person を返す方法はありますが、Person オブジェクト名を持つ JSON 文字列を持っていますか?

4

1 に答える 1

1

Person プロパティを持つ新しいクラスを作成し、それをインスタンス化し、値を Person プロパティに割り当てて、このオブジェクトを返すだけです。

このようにして、JSON は期待どおりに表示されます。

新しいクラスを作成したくない場合は、次のように匿名型を使用してみてください。

// If you have this object
var MyPerson = ...;
// Return this from Web API
return new { Person = MyPersons };

(この最後のオプションがうまくいくかどうかはわかりません)

于 2013-11-14T09:44:35.293 に答える