使用转换器初始化 JsonSerializerOptions

Noa*_*ahl 7 c# .net-core system.text.json

我想从 System.Text.Json创建JsonSerializerOptions的静态实例。该实例应该有一个自定义的转换器列表。所以,我的倾向是:

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

文档显示了在实例存在后如何添加转换器,例如Add

var serializeOptions = new JsonSerializerOptions();
serializeOptions.Converters.Add(new DateTimeOffsetConverter());
Run Code Online (Sandbox Code Playgroud)

对于静态字段有什么优雅的想法吗?

Str*_*ior 18

如果您只使用大括号,C# 的初始化语法实际上会调用“Add”:

static readonly JsonSerializerOptions serializerOptions = new JsonSerializerOptions
{
    Converters = { new DateTimeOffsetConverter() }
}
Run Code Online (Sandbox Code Playgroud)

您还可以使用静态初始化程序:

static readonly JsonSerializerOptions serializerOptions = new JsonSerializerOptions();

static MyClass(){
    serializerOptions.Converters.Add(new DateTimeOffsetConverter())
}
Run Code Online (Sandbox Code Playgroud)

  • 热死了!我希望那存在。谢谢,就像魅力一样。 (2认同)