Прочитать JSON как строку из Microsoft.Extensions.Configuration - PullRequest
1 голос
/ 13 июля 2020

Microsoft.Extensions.Configuration имеет свой собственный API для навигации по JSON, содержащемуся в файле конфигурации, который он читает. (Это то, что ASP. NET использует для конфигурации)

Для данный узел JSON - есть ли способ получить доступ к его содержимому в виде строки, а не в виде нескольких объектов конфигурации? У меня есть объекты JSON в моем файле конфигурации, которые мне нужно запустить через десериализатор JSON (поэтому я просто хочу прочитать этот узел из файла в виде строки).

Что-то вроде следующего:

var myObjectsSection = configuration.GetSection("MyObjects");
var innerText = myObjectsSection.InnerText; //Is there any way to do this???
var myObjs = JsonConvert.DeserializeObject<MyObject[]>(innerText);

Файл конфигурации:

{
   "SomeSetting": "mySetting",
   "MyObjects": [
        {
            ...
        },
        {
            ...
        }
   ]
}

1 Ответ

1 голос
/ 13 июля 2020

Asp. net В ядре 3 есть метод получения значения конфигурации, связанного с типом: T IConfigurationSection.Get<T>()

Я попытался проанализировать описанную вами настраиваемую конфигурацию, и она работает.

установка приложения. json:

{
  "CustomSection": [
    {
      "SomeProperty": 1,
      "SomeOtherProperty": "value1"
    }
  ]
}

Класс запуска:

public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            this.Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            IConfigurationSection section = this.Configuration.GetSection("CustomSection");
            var configs = section.Get<List<CustomSectionClass>>();
        }

        public class CustomSectionClass
        {
            public int SomeProperty { get; set; }
            
            public string SomeOtherProperty { get; set; }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...