Десериализовать массив из JSON в C#

#c# #arrays #json #api #json.net

#c# #массивы #json #API #json.net

Вопрос:

Итак, я пытаюсь десериализовать массив из JSON в класс C # с помощью Newtonsoft. Я видел учебные пособия и другие вопросы по этому поводу, но я сталкиваюсь с проблемами, поскольку массив, который я хочу получить, находится не на верхнем уровне JSON. JSON структурирован следующим образом, где я хочу извлечь массив «данных» и десериализовать его:

  "success": true,
  "data": [
    {      
      "key": "americanfootball_nfl",
      "active": true,
      "group": "American Football",
      "details": "US Football",
      "title": "NFL",
      "has_outrights": false
    },
    {
      "key": "aussierules_afl",
      "active": true,
      "group": "Aussie Rules",
      "details": "Aussie Football",
      "title": "AFL",
      "has_outrights": false
    },
    {
      "key": "basketball_euroleague",
      "active": true,
      "group": "Basketball",
      "details": "Basketball Euroleague",
      "title": "Basketball Euroleague",
      "has_outrights": false
    }
]}
 

Я знаю, что сначала мне нужно извлечь объект данных из JSON, а затем проанализировать его, но я не слишком уверен, как это сделать. У меня есть этот класс для десериализации JSON:

 public class SportsModel
    {       
        public bool Success { get; set; }
        public string Data { get; set; }       
    }

    public class SportsData
    {
        public string Key { get; set; }
        public bool Active { get; set; }
        public string Group { get; set; }
        public string Details { get; set; }
        public string Title { get; set; }
        public bool HasOutrights { get; set; }
    }
 

И в настоящее время получить верхний уровень данных, используя это:

 SportsModel data = JsonConvert.DeserializeObject<SportsModel>(response);
 

Я хочу поместить данные массива JSON в объект list, чтобы я мог получить доступ ко всему этому

Ответ №1:

Вам нужно только исправить эту часть, чтобы сериализатор понял, что вы десериализуете Data поле в тип SportsData , а не в string .

 public class SportsModel
{
   public bool Success { get; set; } 
   public List<SportsData> Data { get; set; } 
}
 

Обновить
Чтобы получить данные в список, я бы предположил, что вы имеете в виду что-то подобное

 SportsModel result = JsonConvert.DeserializeObject<SportsModel>(response);
var sportsDataList = result.Data;
 

Комментарии:

1. Как я могу получить эти данные в список?

Ответ №2:

Ваш класс спортивных моделей должен быть обновлен до:

 public class SportsModel
{
   public bool Success { get; set; } 
   public List<SportsData> Data { get; set; } 
}


SportsModel result = JsonConvert.DeserializeObject<SportsModel>(response);
 

И вы получите данные в виде списка.

Ответ №3:

Что вы можете сделать, это; перейдите в visual Studio и в меню меню редактирования и вставьте специальный и нажмите затем вставить json как класс.

Но сначала вам нужно сначала скопировать строку json.

введите описание изображения здесь