Asp.Net Core从appsettings.json

时间:2019-05-07 13:13:03

标签: c# asp.net-core

检索appsettings.json中设置的json数组时遇到问题。

使用 Configuration.GetSection(“ xxx”)。GetChildren()来获取json数组时,返回值为null。然后,我使用下面的方法解决了问题,并成功了。

在appsettings.json中:

{
  "EndPointConfiguration": [
    {
      "UserName": "TestUser",
      "Email": "Test@global.com"
    },
    {
      "UserName": "TestUser",
      "Email": "Test@global.com"
    }
  ]
}

然后我创建课程:

public class EndPointConfiguration 
{
    public string UserName { get; set; }
    public string Email { get; set; }
}

最后,使用EndPointConfiguration类的数组将起作用:

var endPointConfiguration = Configuration.GetSection("EndPointConfiguration").Get<EndPointConfiguration[]>();

.net核心对我来说还很陌生,所以为什么Configuration.GetSection()。GetChildren()无法工作。谁能熟练地提供答案?谢谢。

1 个答案:

答案 0 :(得分:1)

GetChildren()方法将返回IEnumerable<IConfigurationSection>,如果使用简单类型(例如字符串列表),这将非常有用。例如:

{
  "EndPointUsernames": [
      "TestUser1",
      "TestUser2",
      "TestUser3",
      "TestUser4"
   ]
}

可以很容易地添加到字符串数组中,而无需定义单独的类,例如EndPointConfiguration。从这里您可以简单地致电

string[] userNames = Configuration.GetSection("EndPointUsernames").GetChildren().ToArray().Select(c => c.Value).ToArray();

检索这些值。在示例中,您已将结果强烈键入EndPointConfiguration对象列表中。