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

使用RestSharp调用API返回JSON时报InvalidCastException错误如何解决

问题根源

接口返回的JSON最外层是单个对象,你当前的代码将其反序列化为List<ApiResponseON>数组类型,同时定义的Model结构和JSON结构不匹配,导致类型转换报错。

需要修改的内容

1. 重新定义匹配JSON结构的Model

你不需要定义所有返回字段,只需要保留你需要用到的字段即可,示例如下:

// 最外层响应对象,对应JSON的根结构
public class ApiRootResponse
{
    // 对应JSON里的Data数组字段
    public List<OrderItem> Data { get; set; }
    // 其他需要的根字段可以自行添加,比如ReturnCode、TotalRecords等
}

// 对应Data数组里的每个订单对象
public class OrderItem
{
    // 属性名和JSON里的字段名保持大小写一致,或者添加序列化别名
    public string? Comments { get; set; }
    // 其他需要的订单字段可以自行添加,比如OrderNumber、OrderStatus等
}

如果你的序列化器对大小写敏感,可给属性加[JsonPropertyName("Comments")](System.Text.Json)或[JsonProperty("Comments")](Newtonsoft.Json)别名注解。

2. 修改API请求方法的反序列化逻辑

将原来反序列化为数组的逻辑,改为反序列化为最外层的ApiRootResponse对象,再返回内部的Data数组即可:

// 返回值改为OrderItem集合
public async Task<List<OrderItem>> GetJson(string on)
{
    RestRequest restRequest = new RestRequest($"/search?filter.on={on}&filter.status=All");
    var rootResponse = await _restClient.GetAsync<ApiRootResponse>(restRequest);
    // 判空后返回数据,避免空引用异常
    return rootResponse?.Data ?? new List<OrderItem>();
}

内容的提问来源于stack exchange,提问作者Jason Smithers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:15:02