Как сделать вывод о выходе Json в поддержку Owin?

Я использую Owin для создания самостоятельного сервера, который поддерживает как запросы файлов, так и веб-api. Но вывод для запросов веб-api всегда в формате xml. Как настроить owin для вывода в json?

Код выглядит следующим образом:

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);
    }
}

Ответы

Ответ 1

Я сам нашел ответ. Все, что нужно сделать, это добавить форматировщик json, как показано ниже:

config.Formatters.Clear();
config.Formatters.Add(new JsonMediaTypeFormatter());
config.Formatters.JsonFormatter.SerializerSettings =
new JsonSerializerSettings
{
    ContractResolver = new CamelCasePropertyNamesContractResolver()
};

Если вам нужно преобразовать enum в строку, добавьте StringEnumConverter в настройки.

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());