Store String Array In appSettings?
Solution 1
You could use the AppSettings with a System.Collections.Specialized.StringCollection
.
var myStringCollection = Properties.Settings.Default.MyCollection;
foreach (String value in myStringCollection)
{
// do something
}
Each value is separated by a new line.
Here's a screenshot (german IDE but it might be helpful anyway)
Solution 2
For strings it is easy, simply add the following to your web.config
file:
<add key="myStringArray" value="fred,Jim,Alan" />
and then you can retrieve the value into an array as follows:
var myArray = ConfigurationManager.AppSettings["myStringArray"].Split(',');
Solution 3
ASP.Net Core supports it binding a list of strings or objects.
For strings as mentioned, it is possible to retrieve it through AsEnumerable()
.
Or a list of objects via Get<List<MyObject>>()
. The sample is below.
appsettings.json
:
{
...
"my_section": {
"objs": [
{
"id": "2",
"name": "Object 1"
},
{
"id": "2",
"name": "Object 2"
}
]
}
...
}
Class to represent the object
public class MyObject
{
public string Id { get; set; }
public string Name { get; set; }
}
Code to retrieve from appsettings.json
Configuration.GetSection("my_section:objs").Get<List<MyObject>>();
Solution 4
For integers I found the following way quicker.
First of all create a appSettings key with integer values separated by commas in your app.config.
<add key="myIntArray" value="1,2,3,4" />
Then split and convert the values into int array by using LINQ
int[] myIntArray = ConfigurationManager.AppSettings["myIntArray"].Split(',').Select(n => Convert.ToInt32(n)).ToArray();
Solution 5
You may also consider using custom configuration section/Collection for this purpose. Here is a sample:
<configSections>
<section name="configSection" type="YourApp.ConfigSection, YourApp"/>
</configSections>
<configSection xmlns="urn:YourApp">
<stringItems>
<item value="String Value"/>
</stringItems>
</configSection>
You can also check on this excellent Visual Studio add-in that allows you to graphically design .NET Configuration Sections and automatically generates all the required code and a schema definition (XSD) for them.
Greg
Updated on August 12, 2021Comments
-
Greg over 2 years
I'd like to store a one dimensional string array as an entry in my
appSettings
. I can't simply separate elements with,
or|
because the elements themselves could contain those characters.I was thinking of storing the array as
JSON
then deserializing it using theJavaScriptSerializer
.Is there a "right" / better way to do this?
(My
JSON
idea feels kinda hacky)