You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Forms中Refit调用API遇System.Text.Json反序列化异常

问题原因

API返回的JSON是包含单个User对象的数组(用[]包裹),但你的Refit接口GetData2方法声明返回单个User对象,类型不匹配导致反序列化失败。

解决方案

1. 修改Refit接口的返回类型

将Task<User>改为Task<List<User>>或Task<User[]>,适配数组格式:

namespace Glow.Interface
{
    public interface IAuthAPI
    {
        [Post("/subscribers/login")]
        Task<string> SignIn([Body] Dictionary<string, string> data);

        [Post("/subscribers")]
        Task<string> Register([Body] Dictionary<string, string> data);
        
        // 修改返回类型为List<User>
        [Get("/subscribers/{gmail}")]
        Task<List<User>> GetData2([AliasAs("gmail")] string gmail);
    }
}

2. 调整调用代码

因为返回的是用户列表,需要从列表中获取目标用户:

var userList = await todoServer.GetData2(gmail);
var todoItem = userList.FirstOrDefault(); // 若确定仅返回一个用户,可使用First()
额外说明
  • 你的User模型属性名与JSON字段完全匹配(包括_id、__v),这部分无需修改。
  • 如果后端API设计是根据gmail返回单个用户,也可以要求后端调整返回格式为单个对象(去掉外层[]),这样就不需要修改前端接口定义。

内容的提问来源于stack exchange,提问作者akrem abdulkadir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:31:00