【发布时间】:2013-11-14 17:44:35
【问题描述】:
我正在使用 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 但有带有 Person 对象名称的 JSON 字符串?
【问题讨论】:
-
你想从哪里得到人名? JSON 只是一个值,当您在客户端收到它时,可以将其分配给您想要的任何内容。
-
看看 SwaggerUI 以及它需要如何定义“模型”。
-
任何人都可以有时间帮助您,但要让事情变得更容易。我没有时间看 SwaggerUI。也许还有很多其他人。
-
很公平。 SwaggerUI 需要 JSON 结构为 "modelName" : { "property1": value, "property2" : value2} .. 如果返回类型是来自 Web API 的“HttpResponseMessage”,我只能这样做。然后 Swagger 认为模型是 HttpResponseMessage 而不是实际模型。如果我将返回类型设置为“ModelName”,那么 Web API 将创建 JSON 对象,其中仅包含模型属性的键/值对,而不指定模型名称。然后 swagger 查看它并没有生成模型属性和数据类型的文档。
标签: json asp.net-mvc-4 asp.net-web-api swagger-ui