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

RestSharp反序列化API返回JSON为Client列表失败求助

问题分析与解决建议

你遇到的问题根源很清晰:你的JSON响应结构和你尝试反序列化的目标类型不匹配。

看一下返回的JSON结构,最外层是一个包含resource属性的对象,这个属性的值才是你需要的Client数组;而你直接让RestSharp反序列化为List<Client>,RestSharp找不到对应的数组结构,自然返回null。当你反序列化为单个Client时,它会尝试匹配第一个对象的字段,刚好能对上第一个元素的属性,所以能拿到数据,但这并不是正确的做法。


解决方案1:创建对应的包装类(推荐)

最规范的做法是创建一个和JSON外层结构匹配的类,然后再提取里面的List<Client>:

1. 定义包装类

public class ClientResponse
{
    public List<Client> resource { get; set; }
}

2. 修改反序列化代码

把原来的IRestResponse<List<Client>>改成IRestResponse<ClientResponse>,然后从响应数据中取出resource属性:

IRestResponse<ClientResponse> response = restClient.Execute<ClientResponse>(request);
var content = response.Content;
var clientList = response.Data?.resource; // 这里拿到的就是Client列表

// 遍历输出测试
if (clientList != null)
{
    foreach(Client c in clientList)
    {
        Console.WriteLine(c.ClientName);
    }
}

解决方案2:手动解析JSON(无需新增类)

如果你不想新增包装类,可以用Newtonsoft.Json(RestSharp底层通常也依赖它)直接解析JSON字符串,提取resource数组再反序列化:

IRestResponse response = restClient.Execute(request);
var content = response.Content;

// 解析JSON并提取resource数组
var jsonObj = Newtonsoft.Json.Linq.JObject.Parse(content);
var clientList = jsonObj["resource"].ToObject<List<Client>>();

// 遍历输出测试
foreach(Client c in clientList)
{
    Console.WriteLine(c.ClientName);
}

这两种方法都能解决你当前的问题,第一种更符合强类型编程的规范,便于维护;第二种适合快速临时处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:51:04