【问题标题】:How to know the length of JSON array via IConfiguration?如何通过 IConfiguration 知道 JSON 数组的长度?
【发布时间】:2018-01-15 18:27:00
【问题描述】:

我有一个secret.json,如下所示。我使用 Secret Manager 工具显示secret.json

{

  "Users": [
    {
      "UserName": "xxx@yyy.zzz",
      "Email": "xxx@yyy.zzz",
      "Password": "$aA12345"        
    },
    {
      "UserName": "aaa@bbb.ccc",
      "Email": "aaa@bbb.cc",
      "Password": "$aA12345"
    }
  ]
}

Seed.Initialize 中,我想使用动态获得的数组Todos 的长度,而不是硬代码。

public static class Seed
{
    public static void Initialize(IConfiguration configuration, UserManager<ApplicationUser> userManager)
    {
        context.Database.Migrate();


        if(!userManager.Users.Any())
        {
            for (int i = 0; i < 2; i++)
            {
                ApplicationUser user = new ApplicationUser
                {
                    UserName = configuration[$"Users:{i}:Username"],
                    Email = configuration[$"Users:{i}:Email"]
                };
                userManager.CreateAsync(user, configuration[$"Users:{i}:Password"]).Wait();
            }
        }

    }
}

问题

IConfiguration如何获取JSON数组的长度?换句话说,我想写类似的东西

for (int i = 0; i < configuration["Users"].Blablabla(); i++)

【问题讨论】:

    标签: c# json asp.net-core


    【解决方案1】:

    您可以创建一个与您的结构相匹配的类,例如:

    public class User
    {
        public string UserName { get; set; }
        public string Email { get; set; }
        public string Password { get; set; }
        public TodoItem[] Todos { get; set; }
    }
    
    public class TodoItem
    {
        public string Todo { get; set; }
        public DateTime DueDate { get; set; }
    }
    

    然后将其作为强类型数组获取:

    User[] users = configuration.GetSection("Users").Get<User[]>();
    

    你大概可以弄清楚如何用这个来制作循环:)

    【讨论】:

    • 所以你的意思是用户有待办事项,例如"Users":[{"UserName":"a", "Todos":[{}]]?
    • 也添加了它作为示例。碰巧这种格式适用于 DateTime。
    • 有趣的是,没有。数组中的 TodoItem 将为 null。
    猜你喜欢
    • 2017-06-20
    • 2021-11-05
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    相关资源
    最近更新 更多