首页 > 解决方案 > 使用转换器初始化 JsonSerializerOptions

问题描述

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

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

一旦实例存在,文档显示使用Add添加转换器,例如:

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

有什么优雅的想法可以为静态字段做到这一点吗?

标签: c#.net-coresystem.text.json

解决方案


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

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

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

static readonly JsonSerializerOptions serializerOptions = new JsonSerializerOptions();

static MyClass(){
    serializerOptions.Converters.Add(new DateTimeOffsetConverter())
}

推荐阅读