【问题标题】:Swagger UI + MVC 4 Web API Get JSON with object nameSwagger UI + MVC 4 Web API 获取带有对象名称的 JSON
【发布时间】: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


【解决方案1】:

只需创建一个具有 Person 属性的新类,实例化它,将值分配给 Person 属性并返回此对象。

通过这种方式,JSON 将按预期显示。

如果您不想创建新类,请尝试使用匿名类型,如下所示:

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

(我不知道最后一个选项是否适合你)

【讨论】:

  • 好的,我会试一试。你已经理解我的问题了:) +1
猜你喜欢
  • 2011-10-28
  • 1970-01-01
  • 2021-10-20
  • 2017-04-01
  • 2013-01-07
  • 1970-01-01
  • 2014-01-15
  • 2020-04-10
  • 1970-01-01
相关资源
最近更新 更多