Я sh, чтобы получить доступ к спрайту "front_default" в PokeAPI для бульбазавра (https://pokeapi.co/).
У меня есть следующий инициализатор коллекции:
public class PokemonModel
{
public int Id { get; set; }
public string Name { get; set; }
public Dictionary<string, string> Sprites { get; set; }
}
И следующий код для моего WPF MainWindow:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private async Task LoadImage(int pokedexNumber = 1)
{
PokedexProcess pkdx = new PokedexProcess();
PokemonModel pkmn = await pkdx.LoadPokedex(pokedexNumber);
var uriSource = new Uri(Convert.ToString(pkmn.sprites["front_default"]), UriKind.Absolute);
pokemonImage.Source = new BitmapImage(uriSource);
}
private async void Window_Loaded(object sender, RoutedEventArgs e)
{
await LoadImage();
}
private async void Button_Click(object sender, RoutedEventArgs e)
{
}
}
public class PokedexProcess
{
public async Task<PokemonModel> LoadPokedex(int number)
{
var url = new Url($"https://pokeapi.co/api/v2/pokemon/{ number }");
PokemonModel pkmn = await url.GetJsonAsync<PokemonModel>();
return pkmn;
}
}
Однако, когда я пытаюсь получить доступ к спрайту с его помощью, я получаю следующее сообщение об ошибке:
Flurl .Http.FlurlParsingException: 'Не удалось десериализовать ответ на JSON: GET https://pokeapi.co/api/v2/pokemon/1'
Внутреннее исключение
JsonReaderException: неожиданно символ, обнаруженный при анализе значения: {. Путь 'sprites.other', строка 1, позиция 162133.
Единственная ошибка, о которой я мог подумать, - это попытка получить к нему неправильный доступ.
Чтобы получить доступ к спецификациям c спрайт, мне нужно получить доступ https://pokeapi.co/api/v2/pokemon/1, а затем спрайты-> front_default-> url изображения