我正在使用swagger ui插件来记录我的web api。我想像这样返回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 });
}不幸的是,因为返回类型是HttpResponseMessage而不是Person本身,所以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,但是有JSON字符串和Person对象名称?
发布于 2013-11-14 17:44:35
只需创建一个具有Person属性的新类,实例化它,将值赋给Person属性并返回此对象。
这样,JSON看起来就像预期的一样。
如果您不想创建新类,请尝试使用匿名类型,如下所示:
// If you have this object
var MyPerson = ...;
// Return this from Web API
return new { Person = MyPersons };(我不知道最后一个选项是否适用于您)
https://stackoverflow.com/questions/19919818
复制相似问题