.NET Core получить массив в массиве из config.json - PullRequest
0 голосов
/ 15 марта 2019

У меня проблема, когда объект массива в моем 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, он вернется к нулю.

У меня вопрос: есть ли какой-то следующий текущий код, который я могу получить из этого массива в массиве, или мне нужно сделать что-то совершенно другое? Почему ядро ​​.net не может связывать каждый объект, который встречается под родительским объектом?

1 Ответ

0 голосов
/ 16 марта 2019

В примере json пропускает , после имени каждой сетки.

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

У вас есть список gridField непосредственно под сеткой в ​​Json.
Однако в кодеВы используете другой объект, GridFields.
. Вы должны удалить класс gridfiels и использовать список gridField в классе Grid:

public class Grid
{
  public string name { get; set; }
  public List<gridField> gridFields {get; set;}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...