如何通过IConfiguration了解JSON数组的长度?

时间:2018-01-15 18:27:00

标签: c# json asp.net-core

我有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++)

1 个答案:

答案 0 :(得分:3)

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

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[]>();

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