3

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"
  ]
}
0

1 Answer 1

10

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

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks! The 2nd method works. Also, just to comment here, it's disheartening to need 3 external nuget packages just to read text from a file, then another one just to get the info from it. Seems like this is way over-complicated.
The 1st method seems intuitive, but returns null for me. The 3rd one works.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.