如何在 appSettings.json 中硬编码和读取字符串数组?
How to hardcode and read a string array in appSettings.json?
我使用 VSCode 和 NetCore 1.1.1.
我需要在我的 appsetting.json 中存储多个数据路径,让我的控制台应用程序知道在哪里寻找它的数据。
这是 appsettings.json 文件的摘录:
{
"ConnectionStrings":
{
"Database": "Filename=./Data/Database/securities_master.db"
},
"Data":
{
"Folders": ["E:/Data/Folder1/","E:/Data/Folder2/"]
}
}
我加载了配置文件,我想将 "Folders" 数组存储在一个变量中:
const string APP_SETTINGS_SECTION = "Data";
const string APP_SETTINGS_KEY = "Folders";
var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
var configuration = builder.Build();
var dataFolders = configuration.GetSection(APP_SETTINGS_SECTION)[APP_SETTINGS_KEY];
dataFolders
是 NULL!
如果我将 appsetting.json 更改为仅指向一个这样的目录,一切正常:
{
"ConnectionStrings":
{
"Database": "Filename=./Data/Database/securities_master.db"
},
"Data":
{
"Folders": "E:/Data/Folder1/"
}
}
dataFolder
= "E:/Data/Folder1/"
所以问题似乎是它不喜欢字符串数组,但对我来说它看起来像一个有效的 Json 字符串数组。我应该如何修改我的应用程序设置(或我的 C# 代码)来解决这个问题?
部分 returns 字符串的索引器通过精确的键匹配,并且由于数组值具有带后缀的键,因此没有任何匹配给定键的内容,您将得到空值。
要使其正常工作,您可以使用类似这样的东西
var section = configuration.GetSection($"{APP_SETTINGS_SECTION}:{APP_SETTINGS_KEY}");
var folders = section.Get<string[]>();
并检查 this 以获得更多选项。
这里的原始答案:
像这样工作:
var someArray = configuration
.GetSection("SomeArray")
.GetChildren()
.Select(x => x.Value)
.ToArray();
我使用 VSCode 和 NetCore 1.1.1.
我需要在我的 appsetting.json 中存储多个数据路径,让我的控制台应用程序知道在哪里寻找它的数据。
这是 appsettings.json 文件的摘录:
{
"ConnectionStrings":
{
"Database": "Filename=./Data/Database/securities_master.db"
},
"Data":
{
"Folders": ["E:/Data/Folder1/","E:/Data/Folder2/"]
}
}
我加载了配置文件,我想将 "Folders" 数组存储在一个变量中:
const string APP_SETTINGS_SECTION = "Data";
const string APP_SETTINGS_KEY = "Folders";
var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
var configuration = builder.Build();
var dataFolders = configuration.GetSection(APP_SETTINGS_SECTION)[APP_SETTINGS_KEY];
dataFolders
是 NULL!
如果我将 appsetting.json 更改为仅指向一个这样的目录,一切正常:
{
"ConnectionStrings":
{
"Database": "Filename=./Data/Database/securities_master.db"
},
"Data":
{
"Folders": "E:/Data/Folder1/"
}
}
dataFolder
= "E:/Data/Folder1/"
所以问题似乎是它不喜欢字符串数组,但对我来说它看起来像一个有效的 Json 字符串数组。我应该如何修改我的应用程序设置(或我的 C# 代码)来解决这个问题?
部分 returns 字符串的索引器通过精确的键匹配,并且由于数组值具有带后缀的键,因此没有任何匹配给定键的内容,您将得到空值。
要使其正常工作,您可以使用类似这样的东西
var section = configuration.GetSection($"{APP_SETTINGS_SECTION}:{APP_SETTINGS_KEY}");
var folders = section.Get<string[]>();
并检查 this 以获得更多选项。
这里的原始答案:
像这样工作:
var someArray = configuration
.GetSection("SomeArray")
.GetChildren()
.Select(x => x.Value)
.ToArray();