Проблемы с синтаксисом при попытке печати списка в списке - PullRequest
0 голосов
/ 11 июня 2019

Я не могу понять синтаксис о том, как получить значения этого списка в списке.

 public class Toppings
 {
    public List<string> PizzaToppings { get; set; }

 }

static void Main(string[] args)
    {

        List<Toppings> items = new List<Toppings>();

        using (StreamReader r = new StreamReader("C:\\pizzas.json"))
        {
            string json = r.ReadToEnd();
            items = JsonConvert.DeserializeObject<List<Toppings>>(json);
        }

Я заполнил свой список, как показано выше, но я не уверен, как печатать. Это одна из многих вещей, которые я пробовал:

foreach (Toppings item in items)
{
    foreach (List<string> s in item)
    {
        Console.WriteLine(s.PizzaToppings);
    }   
}

Но я продолжаю получать сообщения об отсутствии публичного определения экземпляра «GetNumerator» для элемента.

JSON выглядит так

[
  {
    "toppings": [
      "pepperoni"
    ]
  },
  {
    "toppings": [
      "feta cheese",
      "bacon"
    ]
  },

И когда я попытался выполнить foreach (String s в item.PizzaToppings, я получил ссылку на объект, не установленную на экземпляр ошибки объекта.

1 Ответ

0 голосов
/ 12 июня 2019

Вам нужно убедиться, что объект соответствует JSON. Также вы можете сделать SelectMany, чтобы свернуть список списка. Следующий код распечатает все начинки в JSON:

void Main()
{
    var json = File.ReadAllText("C:\\pizzas.json");

    var obj = JsonConvert.DeserializeObject<List<PizzaToppings>>(json);

    foreach(var topping in obj.SelectMany(o => o.Toppings))
    {
        Console.WriteLine(topping);
    }
}

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