如何从.net核心中的appsettings.json中提取列表

我有一个appsettings.json文件,如下所示:

{ "someSetting": { "subSettings": [ "one", "two", "three" ] } } 

当我构建我的配置根,并执行类似config["someSetting:subSettings"]它返回null,并且可用的实际设置如下所示:

config["someSettings:subSettings:0"]

有没有更好的方法来检索someSettings:subSettings的内容someSettings:subSettings作为列表?

您可以使用配置绑定器获取配置源的强类型表示。

这是我之前写过的测试的一个例子,希望它有所帮助:

  [Fact] public void BindList() { var input = new Dictionary { {"StringList:0", "val0"}, {"StringList:1", "val1"}, {"StringList:2", "val2"}, {"StringList:x", "valx"} }; var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(input); var config = configurationBuilder.Build(); var list = new List(); config.GetSection("StringList").Bind(list); Assert.Equal(4, list.Count); Assert.Equal("val0", list[0]); Assert.Equal("val1", list[1]); Assert.Equal("val2", list[2]); Assert.Equal("valx", list[3]); } 

重要的部分是对Bind的呼唤。

测试和更多示例在GitHub上

假设你的appsettings.json看起来像这样:

 { "foo": { "bar": [ "1", "2", "3" ] } } 

您可以像这样提取列表项:

 Configuration.GetSection("foo:bar").Get>()