访问存储在IOption类中的appsettings.json文件中的键值对

时间:2018-02-04 18:00:22

标签: c# json azure asp.net-core-mvc asp.net-core-2.0

我在我的appsettings.json文件中存储了一组键值对:

{
  "ApplicationSettings": {
    ...
    "CellularProviders": [
      {
        "Cingular": "cingularme.com"
      },
      {
        "Nextel": "vtext.com"
      },
      {
        "Sprint": "messaging.sprintpcs.com"
      },
      {
        "T-Mobile": "tmomail.net"
      },
      {
        "Verizon": "messaging.nextel.com"
      },
      {
        "Virgin Mobile": "vmobl.com"
      }
    ]
    ...
}

目前,我在List<Dictionary<string,string>>填充的POCO类中使用了Startup.cs

public class ApplicationSettings
{
    ...
    public List<Dictionary<string,string>> CellularProviders { get; set; }

}

这是表示键值对数组的推荐方法吗?

此外,我希望能够使用应用程序的“设置”部分在Azure中管理此设置:

enter image description here

在此上下文中表示键值对数组的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您无法将JSON放入App设置,因为它是一组简单的键值对。要覆盖appsettings.json中的设置,您需要表示完整路径,按: s分段,作为键(值保持不变):

例如,一个keyCellularProviders:Cingularvalue设置为cingularme.com

CellularProviders:Cingular = cingularme.com
CellularProviders:Nextel = vtext.com
CellularProviders:Sprint = messaging.sprintpcs.com
CellularProviders:T-Mobile = tmomail.net
CellularProviders:Verizon = messaging.nextel.com
CellularProviders:VirginMobile = vmobl.com

至于将其转换为List<Dictionary<string, string>>,我不确定我理解你为何使用&#34;词典列表&#34;而不是Dictionary<string, string>

Dictionary<TKey, TValue>几乎是List<T>KeyValuePair<TKey, TValue>个对象(请注意,这有点过于概括)。您应该考虑使用它:

public Dictionary<string,string> CellularProviders { get; set; }

这将允许您轻松查找集合中的值,如下所示:

var providerValue = CellularProviders["Cingular"];