Asp.Net Core получает массив json из appsettings.json - PullRequest
2 голосов
/ 07 мая 2019

Я столкнулся с проблемой при получении массива json, установленного в appsettings.json.

При использовании Configuration.GetSection ("xxx"). GetChildren () для получения массива json, ивозвращаемое значение равно нулю.Затем я воспользовался способом ниже, чтобы решить проблему, и это сработало.

В 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 Ответ

1 голос
/ 07 мая 2019

Метод GetChildren() вернет вам IEnumerable<IConfigurationSection>, что прекрасно, если вы работаете с простыми типами, такими как список строк. Например:

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

можно легко добавить в массив строк без необходимости определять отдельный класс, такой как EndPointConfiguration, как у вас есть. Отсюда вы можете просто позвонить

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

, чтобы получить эти значения. Вы сделали это правильно в своем примере, так как вы строго набрали результаты в список EndPointConfiguration объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...