<分区>
假设我有以下 DTO:
public class FooDto
{
public string Bar { get; set; }
public DayOfWeek[] Days { get; set; }
}
为了符合相应的API,这个DTO需要像这样序列化成json:
{
"bar": "someString",
"days": ["Monday", "Friday", "Sunday"]
}
如果没有任何进一步的操作,同一个 DTO 将像这样序列化:
{
"bar": "someString",
"days": [1, 5, 0]
}
我的问题:
有没有一种方法可以使用 System.Text.Json
将第三方枚举数组(如 System.DayOfWeek
)序列化为字符串值数组?我特别不寻找使用 json.net (Newtonsoft) 的解决方案。
我的想法没有实现:
- 使用
[JsonConverter(typeof(JsonStringEnumConverter))]
不适用于数组。 - 在这种情况下,建议将注释直接放在枚举本身之上。这是不可能的,因为它是第三方枚举。
- 我不能简单地为
System.DayOfWeek
创建一个“代理”,因为枚举不支持继承。 - 我可以创建自己的
DayOfWeekDto
并编写一个从System.DayOfWeek
到DayOfWeekDto
的映射器,反之亦然,但是这个“解决方案”没有看起来一点也不优雅。
非常欢迎不包含 Newtonsoft 的简单解决方案的想法:)