C# 如何通过IConfiguration知道JSON数组的长度?

C# 如何通过IConfiguration知道JSON数组的长度?,c#,json,asp.net-core,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"

我有一个
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();
            }
        }

    }
}

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

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[]>();
User[]users=configuration.GetSection(“用户”).Get();

您可能可以通过以下内容找到如何进行循环:)

因此您的意思是用户有TODO,例如,
“用户”:[{“用户名”:“a”,“TODO”:[{}]]
?也将其作为一个示例添加。碰巧该格式适用于DateTime。有趣的是,不是。数组中的TodoItem将为空。
User[] users = configuration.GetSection("Users").Get<User[]>();