我是编程API的新手。目前我正在使用SwaggerUI for .NET
我想以JSON格式回复请求:
{
"id": "value"
}
如何为我的值创建并返回这样的格式?例如,项目中的默认代码返回
[
"value"
]
使用此功能
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
如何返回一个由swagger正确解释的JSON对象?
答案 0 :(得分:3)
您可以根据需要返回对象。问题是你没有返回正确的对象。
预期的json {"id":"value"}
是对象的json表示。您要返回的json是列表的json表示。
您要返回的json是一个列表,因为这是您的方法返回的内容。当@NateBarbettini回答时,您需要更改您的方法返回的内容。
您的方法返回的值是string[]
,它是一个字符串数组,将格式化为JSON列表。您需要返回一个对象。您可以使用@NateBarbettini建议的匿名对象,也可以返回您编写的自定义类。
要生成结果,请使用以下类:
public class FooViewModel
{
public string Id {get; set;}
}
会做到这一点。
您现在遇到的问题是外壳已关闭。 FooViewModel.Id使用PascalCase,这是C#的标准,但json使用camelCase。
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver =
new CamelCasePropertyNamesContractResolver();
其中config
是您的HttpConfiguration。您可以在代码中看到GlobalConfiguration.Configuration
实施例
[JsonProperty("id")]
public string Id {get; set;}
无论您做什么,都必须从IEnumerable<string>
更改方法的返回类型。我喜欢细节,因此我会将您的返回类型设置为您为类命名的任何内容,但将其保留在object
可以正常工作。
答案 1 :(得分:2)
您可以返回一个具有您想要的确切形状的匿名对象:
public object Get()
{
return new { id = "value" };
}
答案 2 :(得分:0)
我使用它将mvc控制器返回值转换为json:
return Json(yourObject, JsonRequestBehavior.AllowGet);