Yes, indeed you can setup default Json.Net settings as Lodewijk explained. But Web API uses its own settings and you have to set them separately.
Web API (.NET Core 3.x and later)
In these versions Json.NET is not used by default. To use it, reference the Microsoft.AspNetCore.Mvc.NewtonsoftJson
NuGet package and do:
services.AddControllers()
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.Converters.Add(nnew StringEnumConverter());
});
Web API (.NET Core 1.x and 2.x)
services.AddMvc(opts =>
{
var jsonFormatter = (JsonOutputFormatter) opts.OutputFormatters
.First(formatter => formatter is JsonOutputFormatter);
jsonFormatter.PublicSerializerSettings.Converters.Add(new StringEnumConverter());
});
Web API (.NET Framework)
var config = GlobalConfiguration.Configuration;
config.Formatters.JsonFormatter.SerializerSettings.Converters
.Add(new StringEnumConverter());
Default Global Settings
Also Json.NET now has an API to setup default global settings:
JsonConvert.DefaultSettings = () =>
{
var settings = new JsonSerializerSettings();
settings.Converters.Add(new StringEnumConverter());
settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
return settings;
};