c# - 如何在不使用 for 循环的情况下从 appsettings 文件中读取对象数组中特定键的值
问题描述
我的 appsettings json 文件
{
"AppSettings": {
"contractInfo": [
{ "contract1": "01/11/2020"},
{ "contract2": "29/07/2021"},
{ "contract3": "15/10/2021"},
{ "contract4": "15/02/2021"}
]
}
}
我有一个单独的配置类。
public ConfigHelper(IConfiguration configuration)
{
_configuration = configuration;
}
public string GetConfigValue(string key)
{
var value = _configuration["AppSettings:" + key];
return !string.IsNullOrEmpty(value) ? Convert.ToString(value) : string.Empty;
}
Contract Info 作为键值对,其中键是合约名称,值是合约结束日期。
如何在不使用 appsettings.json 文件中的 for 循环的情况下读取特定合同的结束日期。(也就是说,如果我们从数据库中获取合同名称为“合同 3”,我想读取合同结束日期来自 appsettingsjson 的合同 3,不使用 for 循环)
任何帮助表示赞赏。谢谢你。
解决方案
您可以将此值加载到字典中(请参阅该链接)
然后,您可以使用键名加载任何选项。
编辑
您必须将 appconfig.json 更改为:
"contractInfo": {
"contract1": "01/11/2020",
"contract2": "29/07/2021",
"contract3": "15/10/2021",
"contract4": "15/02/2021"
}
然后你创建一个自定义类:
public class ApplicationSettings
{
public Dictionary<string, string> contractInfo { get; set; }
}
在 sturtup.cs
public void ConfigureServices(IServiceCollection services)
{
services.Configure<ApplicationSettings>(Configuration);
}
然后你可以像字典一样使用这个值:
var appSettings = services.BuildServiceProvider().GetRequiredService<IOptions<ApplicationSettings>>().Value;
var dValue = appSettings.contractInfo["contract1"];
推荐阅读
- numpy - 在 Numpy 中编写向量矩阵乘积的紧凑而自然的方法
- angular - Angular 5 FormArray > 找不到带有路径的控件:'fields -> 0 -> name'
- scala - 使用 play scala 合并嵌套的 json
- javascript - 在 Jquery 中执行与 append 完全相反的操作
- sql - 联接可能没有记录的表
- docker - 运行 apache 时可以连接到 docker 容器,但在端口 80 上运行 netcat 时不能
- html - 围绕一个圆圈对齐不同的图像并在轨道上旋转并使用引导程序 4 在悬停时在圆圈中显示文本
- kotlin - 为什么 Kotlin 中的选项需要显式初始化?
- tomcat - 在 Tomcat7 或 Tomcat8 中,限制请求超时的最佳方法是什么?
- angularjs - Firebase/Firestore 未返回所有结果