Swagger 创建 JSON 结果 .NET

问题描述 投票:0回答:3

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

我想以 JSON 格式回复请求:

{
  "id": "value"
}

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

[
    "value"
]

使用此功能

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

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

json .net swagger
3个回答
3
投票

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

预期的 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 使用驼峰命名法。

  1. 您可以打破 C# 约定并使用驼峰命名法属性名称
  2. 您可以在 Startup.cs 或 Global.asax.cs 中调整 JsonSerialization 设置以使用驼峰命名法:
    config.Formatters.JsonFormatter.SerializerSettings.ContractResolver =
                new CamelCasePropertyNamesContractResolver();
    ,其中
    config
    是您的 HttpConfiguration。您可能会在代码中看到此内容为
    GlobalConfiguration.Configuration
    1. CamelCasePropertyNamesContractResolver
    2. 配置WebApi
  3. 您可以使用 JsonPropertyAttribute 显式设置属性的 json 名称。

示例

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

无论你做什么,你都必须从

IEnumerable<string>
更改方法的返回类型。我喜欢细节,所以我会将你的返回类型设置为你为类命名的任何名称,但将其保留为
object
就可以了。


2
投票

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

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

0
投票

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

return Json(yourObject, JsonRequestBehavior.AllowGet);
© www.soinside.com 2019 - 2024. All rights reserved.