Skip to main content
 首页 » 编程设计

c#之Xamarin.Forms WebAPI JsonConverter.DeserializeObject 未处理的异常

2024年02月27日34落叶

我正在尝试复制 MoshHamedani 的一门 Xamarin Forms 类(class)中的功能。 这是我的代码(带有有效的工作 _url,返回带有转义字符的 json 对象):

public partial class PartnersListPage : ContentPage 
  { 
    private const string _url = "xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz"; 
    private HttpClient _httpClient = new HttpClient(); 
    private ObservableCollection<Partner> _partners; 
 
    public PartnersListPage() 
    { 
      InitializeComponent(); 
    } 
 
    protected override async void OnAppearing() 
    { 
      var jsonObject = await _httpClient.GetStringAsync(_url); 
      var dotNetObject = JsonConvert.DeserializeObject<List<Partner>>(jsonObject); 
 
      _partners = new ObservableCollection<Partner>(dotNetObject); 
 
      partnersListView.ItemsSource = _partners; 
 
      base.OnAppearing(); 
    } 

Partner.cs 看起来像这样:

public class Partner 
  { 
    //public int Id { get; set; } 
    //public string Name { get; set; } 
    public string ImageUrl { get; set; } 
    public string WebUrl { get; set; } 
  } 

postman 返回以下内容:

{ 
    "partners": [ 
        { 
            "imageUrl": "http://www.abcdefgh.xy//media/1007/3.jpg", 
            "webUrl": "http://www.abcdefgh.xy/" 
        }, 
        { 
            "imageUrl": "http://www.ijklmnop.xy//media/1009/5.jpg", 
            "webUrl": "https://www.ijklmnop.xy/xy" 
        }, 
        { 
            "imageUrl": "http://www.qrstuvxy.xy//media/2623/slsp.svg", 
            "webUrl": "https://www.qrstuvxy.xy/" 
        } 
    ] 
} 

当我点击 JsonConvert.DeserializeObject 行时,我得到以下信息: 发生未处理的异常。 为什么它不起作用?

请您参考如下方法:

您正在使用不正确的类型进行反序列化 ( List<Partner> ) 我正在使用 Json to c#转换器以确定我需要的类 - 只需粘贴您的 json 文本/数据,然后将为您生成类。对于您需要的 json 文本/数据的示例:

public class Partner 
{ 
    public string imageUrl { get; set; } 
    public string webUrl { get; set; } 
} 
 
public class RootObject 
{ 
    public List<Partner> partners { get; set; } 
}  

........

var result = JsonConvert.DeserializeObject<RootObject>(jsonObject);