我正在使用Owin构建一个支持文件请求和web api的自托管服务器。但是,web api请求的输出始终采用xml格式。如何在json中配置owin到输出?
代码如下:
class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseFileServer(new FileServerOptions()
{
RequestPath = PathString.Empty,
FileSystem = new PhysicalFileSystem(@".\files")
});
// set the default page
app.UseWelcomePage(@"/index.html");
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute
(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
app.UseWebApi(config);
}
}
答案 0 :(得分:37)
我自己找到了答案。所有必须做的就是添加一个json格式化程序,如下所示:
config.Formatters.Clear();
config.Formatters.Add(new JsonMediaTypeFormatter());
config.Formatters.JsonFormatter.SerializerSettings =
new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
如果需要将枚举转换为字符串,请将StringEnumConverter添加到设置中。
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());