Я получаю JSON из веб-службы и получаю эту ошибку:
Ошибка CS0030 Невозможно преобразовать тип 'PokeForm.MoveInformation' в 'PokeForm.Move'
Это код, который я использую для запроса веб-службы и классов, которые я использую для анализа данных в нужном мне формате:
private void GrabData()
{
WebClient syncClient = new WebClient();
string url = "https://pokeapi.co/api/v2/pokemon/lucario/";
string response = syncClient.DownloadString(url);
var bl = JsonConvert.DeserializeObject<PokeAPI[]>(response);
foreach (PokeAPI ro in bl)
{
if (ro.Moves != null)
{
foreach (MoveInformation mi in ro.Moves)
{
Move mv = mi.Move;
MessageBox.Show(mv.Name);
}
}
}
}
public class PokeAPI
{
public List<MoveInformation> Moves { get; set; }
}
public class MoveInformation
{
public Move Move { get; set; }
}
public class Move
{
public string Name { get; set; }
public string Url { get; set; }
}
Что нужно изменить в моем цикле foreach
, чтобы данные отображались по моему желанию?
EDIT
Я отредактировал мой синтаксис в соответствии с ответом
foreach (MoveInformation mi in ro.Moves)
{
Move mv = mi.Move;
MessageBox.Show(mv.Name);
}
А теперь я получаю эту ошибку во время выполнения:
Newtonsoft.Json.JsonSerializationException: 'Невозможно десериализовать текущий объект JSON (например, {"name": "value"}) в тип' PokeForm.PokeAPI [] ', так как для типа требуется массив JSON (например, [1,2 , 3]) правильно десериализовать.
Чтобы исправить эту ошибку, либо измените JSON на массив JSON (например, [1,2,3]), либо измените десериализованный тип так, чтобы это был нормальный тип .NET (например, не примитивный тип, например, целое число, а не тип коллекции, например, массив или список), которые можно десериализовать из объекта JSON. JsonObjectAttribute также можно добавить к типу, чтобы принудительно десериализовать его из объекта JSON.
Это JSON - https://pokeapi.co/api/v2/pokemon/lucario/