【问题标题】:Swagger create JSON result .NETSwagger 创建 JSON 结果 .NET
【发布时间】:2016-12-15 16:19:57
【问题描述】:

我是 API 编程新手。目前我正在使用 SwaggerUI for .NET

我想以 JSON 格式回答请求:

{
  "id": "value"
}

如何为我的值创建和返回这样的格式?例如项目中的默认代码返回

[
    "value"
]

通过使用此功能

public IEnumerable<string> Get()
{
    return new string[] { "value1", "value2" };
}

如何返回一个可以被 swagger 正确解释的 JSON 对象?

【问题讨论】:

    标签: .net json api swagger


    【解决方案1】:

    您可以根据需要返回对象的正确设置。问题是您没有返回正确的对象。

    预期的 json {"id":"value"}object 的 json 表示。您返回的 json 是 list 的 json 表示。

    您返回的 json 是一个列表,因为这是您的方法返回的内容。正如@NateBarbettini 回答的那样,您需要更改方法返回的内容。

    您的方法返回的值是string[],它是一个字符串数组,它将被格式化为一个 JSON 列表。您需要返回一个对象。您可以使用@NateBarbettini 建议的匿名对象,也可以返回您编写的自定义类。

    要产生结果,类:

    public class FooViewModel 
    {
        public string Id {get; set;}
    }
    

    会成功的。

    您现在遇到的问题是外壳已关闭。 FooViewModel.Id 使用 PascalCase,这是 C# 中的标准,而 json 使用 camelCase。

    1. 您可以打破 C# 约定并使用 camelCase 属性名称
    2. 您可以在 Startup.cs 或 Global.asax.cs 中调整 JsonSerialization 设置以使用 camelCase:config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 其中config 是您的 HttpConfiguration。您可能会在代码中将其视为GlobalConfiguration.Configuration
      1. CamelCasePropertyNamesContractResolver
      2. Configuring WebApi
    3. 您可以使用JsonPropertyAttribute 明确设置属性的json 名称。

    例子

    [JsonProperty("id")]
    public string Id {get; set;}
    

    无论您做什么,都必须将方法的返回类型从IEnumerable&lt;string&gt; 更改为。我喜欢细节,所以我会将您的返回类型设置为您为班级命名的任何内容,但将其保留在 object 就可以了。

    【讨论】:

      【解决方案2】:

      您可以返回一个具有您想要的确切形状的匿名对象:

      public object Get()
      {
          return new { id = "value" };
      }
      

      【讨论】:

        【解决方案3】:

        我使用它来将一个 mvc 控制器返回值转换为 json:

        return Json(yourObject, JsonRequestBehavior.AllowGet);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-14
          • 2012-03-14
          相关资源
          最近更新 更多