Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to make global settings with JsonSerializerOptions whit .net 8.0 #1417

Open
zdw2018 opened this issue Nov 18, 2023 · 2 comments
Open

How to make global settings with JsonSerializerOptions whit .net 8.0 #1417

zdw2018 opened this issue Nov 18, 2023 · 2 comments

Comments

@zdw2018
Copy link

zdw2018 commented Nov 18, 2023

1

var options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
};

JsonSerializerOptions.Default = options;
image

2

image
This configuration doesn't work

3

var options = new JsonSerializerOptions
{
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
    Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
};

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

@alenroki
Copy link

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

@mswehli
Copy link

mswehli commented Jun 15, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants