Unfortunately, I can't manage to load the email addresses in the appsettings.json to the list . What am I doing wrong?
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", false, true)
.Build();
Setting settings = config.GetRequiredSection("Settings").Get<Setting>();
Config Class:
public class Setting
{
public List<MailAddress> MailAddresses { get; set; }
}
Shortened appsettings.json:
{
"Settings": {
"Mailadresses": [
[ "[email protected]", "DisplayName 1" ],
[ "[email protected], DisplayName 2" ],
[ "[email protected], DisplayName 3" ]
]
}
}
Thanks in advance for your help.
Here is a complete example which creates appsettings.json
followed by reading the data. Written in .NET Core 7.
using Microsoft.Extensions.Configuration;
using System.Text.Json;
namespace StackDemo;
internal partial class Program
{
static void Main(string[] args)
{
CreateAppSettings();
IConfigurationRoot config = InitMainConfiguration();
List<Mailaddress> addresses =
config.GetSection($"{nameof(Settings)}:{nameof(Mailaddress)}")
.Get<Mailaddress[]>().ToList();
foreach (var address in addresses)
{
Console.WriteLine($"{address.Display,-20}{address.Address}");
}
Console.ReadLine();
}
private static void CreateAppSettings()
{
List<Mailaddress> addresses = new List<Mailaddress>()
{
new () { Address = "[email protected]", Display = "First" },
new () { Address = "[email protected]", Display = "Second" },
new () { Address = "[email protected]", Display = "Third" }
};
Root setting = new Root()
{
Settings = new Settings()
{
MailAddress = addresses.ToArray()
}
};
string jsonString = JsonSerializer.Serialize(setting,
new JsonSerializerOptions { WriteIndented = true });
File.WriteAllText("appsettings.json", jsonString);
}
private static IConfigurationRoot InitMainConfiguration()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");
return builder.Build();
}
}
#region Place each class in their own file
public class Root
{
public Settings Settings { get; set; }
}
public class Settings
{
public Mailaddress[] MailAddress { get; set; }
}
public class Mailaddress
{
public string Address { get; set; }
public string Display { get; set; }
}
#endregion