gpt4 book ai didi

c# - 如何硬编码和读取 appSettings.json 中的字符串数组?

转载 作者:IT王子 更新时间:2023-10-29 04:46:33 30 4
gpt4 key购买 nike

我使用 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/"]

}
}

我加载了配置文件,我想将“文件夹”数组存储在一个变量中:

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];

dataFoldersNULL!

如果我将 appsetting.json 更改为仅指向一个这样的目录,一切正常:

{

"ConnectionStrings":

{

"Database": "Filename=./Data/Database/securities_master.db"
},

"Data":

{

"Folders": "E:/Data/Folder1/"
}
}

dataFolder = "E:/Data/Folder1/"

所以问题似乎是它不喜欢字符串数组,但对我来说它看起来像一个有效的 Json 字符串数组。我应该如何修改我的应用程序设置(或我的 C# 代码)来解决这个问题?

最佳答案

一个部分的索引器通过精确的键匹配返回字符串,并且由于数组值具有带后缀的键,因此没有任何东西可以匹配给定的键,您将得到空值。

为了让它工作,你可以使用这样的东西

var section = configuration.GetSection($"{APP_SETTINGS_SECTION}:{APP_SETTINGS_KEY}");
var folders = section.Get<string[]>();

并检查this更多选项。

关于c# - 如何硬编码和读取 appSettings.json 中的字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42858335/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com