【问题标题】:Accessing JSON array from appsettings in controller without Configuration C#在没有配置 C# 的情况下从控制器中的 appsettings 访问 JSON 数组
【发布时间】:2021-02-06 03:25:31
【问题描述】:

我已经搜索过,有类似的问题,但在答案中使用 JSON 数组,他们在控制器中使用 IConfigure。我只能在启动时使用IConfigure

我在appsettings.json 中有这个 JSON 数组

{
  "EmailList":{
    "EmailArray":[
      {
        "name":"John Algovich",
        "email":"John.Algovich@mail.com"
      },
      {
        "name":"Petr Algr",
        "email":"Petr.Algr@mail.com"
      },
      {
        "name":"Mathew Cena",
        "email":"Mathew.Cena@mail.com"
      }
    ]
  }
}

EmailList.cs:

public partial class EmailList 

{
  public List<string> EmailArray { get; set; }
  public string Name { get; set; }
  public string Email { get; set; }
}

Startup.cs 里面有很多注入,所以我用了同样的代码:

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

Controller:

public class DevController : Controller
    {
        private readonly EmailList _devEmailList;
        private List<string> _emailList;

        public DevController(

            IOptions<EmailList> _devEmailList,
        {

            _devEmailList = devEmailList.Value; //This could be wrong since it's json array
            
_emailList = new List<string>();

        }
    }

目标:如何在 Controller 中访问电子邮件地址并将其添加到列表中?

我不能在 Controller 中使用IConfigure

我指的是this answer,但它最初有没有数组的json。 在控制器中使用 IConfigure 的 Json 数组问题

【问题讨论】:

  • 我认为 EmailList 类不代表 appsettings.json 文件中的正确 JSON。

标签: c# json .net appsettings


【解决方案1】:

您的类定义不反映您的 json 结构;

public class EmailAddress {
  public string Name { get; set; }
  public string Email { get; set; }
}

public class EmailList {
  public List<EmailAddress> EmailArray { get; set; }
}

虽然你可以简化两者;

public class EmailList:List<EmailAddress> {}
{
  "EmailList":[
    {
      "name":"John Algovich",
      "email":"John.Algovich@mail.com"
    },
    {
      "name":"Petr Algr",
      "email":"Petr.Algr@mail.com"
    },
    {
      "name":"Mathew Cena",
      "email":"Mathew.Cena@mail.com"
    }
  ]
}

【讨论】:

  • 谢谢!这有帮助,但主要目标是访问电子邮件并将其添加到列表中。你知道我该怎么做吗?
猜你喜欢
  • 2019-09-20
  • 2023-03-25
  • 2014-12-30
  • 1970-01-01
  • 2020-01-04
  • 2014-12-23
  • 2020-08-26
  • 2020-09-02
  • 2016-02-11
相关资源
最近更新 更多