Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Initializing JsonSerializerOptions with Converters

I would like to create a static instance of JsonSerializerOptions from System.Text.Json. This instance should have a custom list of Converters. So, my inclination:

static readonly JsonSerializerOptions serializerOptions = new JsonSerializerOptions
{
    // Error - Converters cannot be assigned to
    Converters = new[] { new DateTimeOffsetConverter() }
};

The docs show using Add to add a Converter once the instance exists, like:

var serializeOptions = new JsonSerializerOptions();
serializeOptions.Converters.Add(new DateTimeOffsetConverter());

Any elegant ideas to do this for a static field?

like image 268
Noah Stahl Avatar asked Mar 22 '26 15:03

Noah Stahl


1 Answers

C#'s initializer syntax will actually call "Add" if you just use braces:

static readonly JsonSerializerOptions serializerOptions = new JsonSerializerOptions
{
    Converters = { new DateTimeOffsetConverter() }
}

You could also use a static initializer:

static readonly JsonSerializerOptions serializerOptions = new JsonSerializerOptions();

static MyClass(){
    serializerOptions.Converters.Add(new DateTimeOffsetConverter())
}
like image 109
StriplingWarrior Avatar answered Mar 24 '26 04:03

StriplingWarrior