Search code examples
c#appsettings.net-core-2.0

How to get string array from core console appSettings.json file


How do I return an string[] from the IConfigurationRoot object?

File exists and is set to copy to output

Code

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

Settings.json

{
  "stringArray": [
    "myString1",
    "myString2",
    "myString3"
  ]
}

Solution

  • Use the GetValue<TResult> extension to get the value of the section.

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

    Or try binding to the section

    var values = new List<string>();
    _configuration.Bind("stringArray", values);
    

    Alternatively ConfigurationBinder.Get<T> syntax can also be used, which results in more compact code:

    List<string values = _configuration.GetSection("stringArray").Get<string[]>();
    

    Reference Configuration in ASP.NET Core: Bind to an object graph