#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);
И вы получите данные в виде списка.