jSonserializer.Deserialize to observableCollection

问题描述 投票:0回答:1

我以JSON格式接收播放器列表API,我想在

PlayerListViewModel
中使用它,但是我不知道如何将其划分为播放器类。

public partial class PlayerListViewModel : ObservableObject { public PlayerListViewModel(){ PlayerListItems = new ObservableCollection<Player>(); } [ObservableProperty] ObservableCollection<Player> playerListItems; }
[RelayCommand]
async Task getPlayersAPI()
{
     var response = await _httpClient.GetAsync(_url);
     var responseString = await response.Content.ReadAsStringAsync();
     playerListItems = JsonSerializer.Deserialize<Player>(responseString);
     //playerListItems = JsonSerializer.Deserialize<List<Player>>(responseString);  
}
玩家class

public class Player { public int Id { get; set; } public required string fullName { get; set; } public required string imageSrc { get; set; } public required string countryFlag { get; set; } }
data收到了示例

[ { "Id": 577, "fullName": "Bob Smith", "imageSrc": "ProfileImage.webp", "countryFlag": "us.svg" }, { "Id": 744, "fullName": "George Kingford", "imageSrc": "ProfileImage.webp", "countryFlag": "ca.svg" } ]

我如何填充playerListItems,以便我可以将其绑定到我的XAML表单。
我遇到的具体错误超过了jsonserializer.deserialize

Cannot implicitly convert type '...Player' to 'System.Collections.ObjectModel.ObservableCollection...<Player>'

如果您的问题是您不知道如何填充
c#
1个回答
0
投票

您可以尝试以下方法:


public partial class PlayerListViewModel : ObservableObject
{
    private readonly HttpClient _httpClient;
    private readonly string _url = "https://api.example.com/players"; // Replace with your API URL

    public PlayerListViewModel()
    {
        _httpClient = new HttpClient();
        PlayerListItems = new ObservableCollection<Player>();    
    }

    [ObservableProperty]
    private ObservableCollection<Player> playerListItems;

    [RelayCommand]
    private async Task GetPlayersAPI()
    {
        
         var response = await _httpClient.GetAsync(_url);
         response.EnsureSuccessStatusCode();

          var responseString = await response.Content.ReadAsStringAsync();
          var players = JsonSerializer.Deserialize<List<Player>>(responseString);

          PlayerListItems.Clear();
          foreach (var player in players)
          {
              PlayerListItems.Add(player);
          }      
    }
}

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.