asp.net 带有字典的核心 ioptions
asp.net core ioptions with a dictionary
我正在尝试将 appsettings.json 文件中的 Letters 作为 Dictionary 阅读。我的 json 包含:
"Words": [
"Alpha",
"Beta",
"Gama"
],
"Letters": [
{ "A": "Alpha" },
{ "B": "Bravo" },
{ "C": "Charlie" }
],
我使用配置class:
public class AppSettingsConfiguration
{
public List<string> Words { get; set; } = default!;
public Dictionary<string, string> Letters { get; set; } = default!;
}
属性 Words 已更正从 .json 读取,但 Letters 抛出异常“无法创建实例”属于 'System.String' 类型,因为它缺少 public 无参数构造函数。'
如果我试过
List<(string, string)> Letters { get; set; }
or
List<KeyValuePair<string, string>> Letters { get; set; }
我得到了所有 3 行,但都是空的 - (null, null)
阅读字典的正确 属性 是什么?
字典在 C# 中的序列化方式不同。请参阅以下JSON:
"Letters": {
"A": "Alpha",
"B": "Bravo",
"C": "Charlie"
}
遗憾的是符合这个数据的模型是List<Dictionary<string, string>>
.
没有停止数据太像:
{
"Words": [
"Alpha",
"Beta",
"Gama"
],
"Letters": [
{ "A": "Alpha" },
{ "A": "Alpha", "B": "Bravo" },
{ "B": "Bravo" }
]
}
所以它不是 KeyValuePair<string, string>
而是完整的词典。
如果您想回到 List<KeyValuePair<string, string>>
,您可以使用简单的 SelectMany(x=> x)
我正在尝试将 appsettings.json 文件中的 Letters 作为 Dictionary 阅读。我的 json 包含:
"Words": [
"Alpha",
"Beta",
"Gama"
],
"Letters": [
{ "A": "Alpha" },
{ "B": "Bravo" },
{ "C": "Charlie" }
],
我使用配置class:
public class AppSettingsConfiguration
{
public List<string> Words { get; set; } = default!;
public Dictionary<string, string> Letters { get; set; } = default!;
}
属性 Words 已更正从 .json 读取,但 Letters 抛出异常“无法创建实例”属于 'System.String' 类型,因为它缺少 public 无参数构造函数。'
如果我试过
List<(string, string)> Letters { get; set; }
or
List<KeyValuePair<string, string>> Letters { get; set; }
我得到了所有 3 行,但都是空的 - (null, null)
阅读字典的正确 属性 是什么?
字典在 C# 中的序列化方式不同。请参阅以下JSON:
"Letters": {
"A": "Alpha",
"B": "Bravo",
"C": "Charlie"
}
遗憾的是符合这个数据的模型是List<Dictionary<string, string>>
.
没有停止数据太像:
{
"Words": [
"Alpha",
"Beta",
"Gama"
],
"Letters": [
{ "A": "Alpha" },
{ "A": "Alpha", "B": "Bravo" },
{ "B": "Bravo" }
]
}
所以它不是 KeyValuePair<string, string>
而是完整的词典。
如果您想回到 List<KeyValuePair<string, string>>
,您可以使用简单的 SelectMany(x=> x)