Прочитайте все значения массива в файле appsetting.json на экране и прочитайте информацию о книге с идентификатором = 555

#c# #asp.net-core

Вопрос:

В appsettings.json

 {
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "book": [
    {
      "id": "555",
      "language": "C",
      "edition": "First",
      "author": "Dennis Ritchie "
    },
    {
      "id": "666",
      "language": "C#",
      "edition": "Second",
      "author": "Anders Hejlsberg"
    }
  ]
}
 

В Startup.cs я просто получаю одно значение по индексу, ниже я получаю по идентификатору

     public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.Run(async (context) =>
        {
            await context.Response.WriteAsync(Configuration.GetSection("book:0:id").Value);
        });
    }
 

Выше приведены мои коды, я получаю только одно значение, Как получить весь массив?
Спасибо!

Ответ №1:

Вы можете попробовать что-то вроде этого:

 var list = new List<MyBookClass>();
Configuration.GetSection("book").Bind(list);
foreach(var book in list)
{ 
   //do what ever you want with your list of books
}
 

Вам нужно будет добавить ссылку на пакет nuget Microsoft.Расширения.Конфигурация.Связующее вещество

Кроме того, вам нужно будет создать класс MyBook следующим образом:

 public class MyBookClass
{
   public string id { get; set; }
   public string language { get; set; }
   public string edition { get; set; }
   public string author { get; set; }
}
 

Это распространенный шаблон для чтения настроек в asp.net сердечник

Затем вы можете делать со списком все, что захотите.