如何从核心控制台appSettings.json文件获取字符串数组

use*_*989 1 c# appsettings .net-core-2.0

如何string[]IConfigurationRoot对象返回?

文件存在并设置为复制到输出

var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("settings.json", optional: false, reloadOnChange: false);
_configuration = builder.Build();

var arr = _configuration["stringArray"]; // this returns null
var arr1 = _configuration["stringArray:0"]; // this works and returns first element
Run Code Online (Sandbox Code Playgroud)

Settings.json

{
  "stringArray": [
    "myString1",
    "myString2",
    "myString3"
  ]
}
Run Code Online (Sandbox Code Playgroud)

Nko*_*osi 6

使用GetValue<TResult>扩展名获取该部分的值。

// Requires NuGet package "Microsoft.Extensions.Configuration.Binder"
var array = _configuration.GetValue<string[]>("stringArray");
Run Code Online (Sandbox Code Playgroud)

或者尝试绑定到该部分

var values = new List<string>();
_configuration.Bind("stringArray", values);
Run Code Online (Sandbox Code Playgroud)

ASP.NET Core中的参考配置:绑定到对象图

  • 谢谢!第二种方法有效。另外,只是在这里发表评论,令人沮丧的是需要 3 个外部 nuget 包只是为了从文件中读取文本,然后另一个只是为了从中获取信息。似乎这太复杂了。 (3认同)
  • 第一个方法看起来很直观,但对我来说返回“null”。第三个有效。 (2认同)