Получить коллекцию из settings.json - PullRequest
0 голосов
/ 01 февраля 2019

Я создаю некоторый файл конфигурации в формате json:

{
    "SomeCollection" : [
        {
            "Val1" : "Some string",
            "Val2" : "Some string2"
        }
    ] 
}

Я создаю объект с этой конфигурацией:

IConfiguration config = new ConfigurationBuilder()
      .AddJsonFile("appsettings.json", true, true)
      .Build();

Но как я могу получить список пар Val1 и Val2?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Хорошо, ребята.После нескольких экспериментов я получаю решение!

IConfiguration config = new ConfigurationBuilder()
  .AddJsonFile("appsettings.json", true, true)
  .Build();
foreach( var en in config.GetSection("SomeCollection").GetChildren())
{
  string Val1= en["Val1"];
  string Val2= en["Val2"];
}

Спасибо за попытку помочь!

0 голосов
/ 03 февраля 2019

Это мой класс:

using System.Collections.Generic;

namespace WebsiteAPI.Models
{
   public class CollectionInAppSettings
   {
        public IDictionary<string,string> SomeCollection { get; set; }
   }
}

Это мой AppSettings:

"CollectionInAppSettings": {
    "SomeCollection": {
        "Val1": "Some string",
        "Val2": "Some string2"
    }
}

Это то, что находится в моем файле startup.cs в разделе ConfigureServices:

services.Configure<CollectionInAppSettings>(Configuration.GetSection("CollectionInAppSettings"));

Вот что в фиктивном HelloController:

    private readonly IOptions<CollectionInAppSettings> _options;

    public HelloController(IOptions<CollectionInAppSettings> options)
    {
        _options = options;
    }

    [HttpGet("[action]")]
    public IActionResult IsUp()
    {
        return Ok(_options.Value);
    }

При вызове конечной точки: https://localhost:4010/api/hello/isup

Возвращается: "someCollection":{"Val1":"Some string","Val2":"Some string2"}

Вотссылка на некоторые другие решения этой проблемы: Нажмите здесь

...