Open zdw2018 opened 8 months ago
I would also like to know how to configure this globally. In Azure Functions before .NET 8 this used to work just fine:
// Setting global System.Text.Json.JsonSerializerOptions
services.Configure<JsonSerializerOptions>(options =>
{
options.PropertyNameCaseInsensitive = true;
options.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault; // Property is ignored if its value is null. This is applied only to reference-type properties and fields.
});
After playing around a little i found it. .net 8 seems to have changed where you configure json options from. In addition to the .AddControllers().AddJsonOptions
method which is still required for parsing request enums from strings, you should now use the ConfigureHttpJsonOptions method for parsing response enums to strings.
e.g.
builder.Services.ConfigureHttpJsonOptions( opt =>{
opt.SerializerOptions.Converters.Add(new JsonStringEnumConverter());
});
1
var options = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, Encoder = JavaScriptEncoder.Create(UnicodeRanges.All) };
JsonSerializerOptions.Default = options;![image](https://github.com/microsoft/dotnet/assets/36786472/f587d31a-aa12-45ed-b62d-bd07ffa24d97)
2
3
System.Text.Json.JsonSerializer.Serialize(object, option); It has to be set up this way for it to work, it's a bit too much of a pain to pass a configuration item each time you serialize it