.NET Core 从 config.json 获取数组中的数组

.NET Core get array in array from config.json

我遇到一个问题,我的 config.json 中的数组对象返回时为空。在以下代码中,gridFields 将返回为空。

{"grids": [{
  "name": "Grid1"
  "gridFields": [
    {
      "Name": "Something",
      "Label": "Something"
    },
    {
      "Name": "SomethingElse",
      "Label": "SomethingElse"
    }]
  },
  {"name": "Grid2"
   "gridFields": [
    {
      "Name": "Something",
      "Label": "Something"
    }]
  }]
}

我有匹配的 POCO,并确保名称匹配如下。

public class Grid
{
  public string name { get; set; }
  public gridFields gridFields {get; set;}
}
public class gridFields
{
    public List<gridField> GridFields { get; set; } = new List<gridField>();
    public int Count => GridFields.Count();
    public IEnumerator GetEnumerator()
    {
        return GridFields.GetEnumerator();
    }
}
public class gridField
{
    public string Name { get; set; }
    public string Label { get; set; }
}

在我的初创公司中,我有以下内容

public void ConfigureServices(IServiceCollection services)
    {            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        var config = new List<Grid>();
        Configuration.Bind("grids", config);
        services.AddSingleton(config);
    }

config.gridFields 最终没有任何值。我有名称值,但没有 gridFields。即使我创建了 gridFields List,它也会返回 null。

我的问题是,在这个当前代码之后是否有某种方法可以让我从这个数组中获取数据,或者我是否需要做一些完全不同的事情。为什么 .net 核心不能绑定它在父级下遇到的每个对象?

示例 json 在每个网格的名称后遗漏了一个 ,

{
  "name": "Grid2",
  "gridFields":
  [{
    "Name": "Something",
    "Label": "Something"
  }]
}

您在 Json 中的网格正下方有一个 gridField 列表。
然而在代码中你使用了另一个对象,GridFields.
您应该删除 gridfiels class 并在 Grid class:

中使用 gridField 列表
public class Grid
{
  public string name { get; set; }
  public List<gridField> gridFields {get; set;}
}