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

使用RestSharp调用DBD角色API返回Null,如何排查问题?

问题排查与解决

1. API响应结构不匹配是核心原因

访问https://dbd.tricky.lol/api/characters?id=Chuckles实际返回的是包含单个对象的数组(格式示例:[{"_id":123,"name":"Chuckles",...}]),但你用GetJsonAsync<Killers>试图反序列化为单个对象,RestSharp无法将数组映射到单个对象,因此返回null。

2. 模型定义存在错误

  • 字段类型不匹配:API返回的tunables是一个对象数组(而非字符串),你模型中定义为string,会导致反序列化失败。
  • 类结构不完整:你只给出了类的属性,但类本身需要是public访问级别,且命名应对应单个角色(比如Killer而非Killers)。

修复步骤

第一步:修正模型类

根据API实际返回结构,定义正确的模型:

public class Killer
{
    public int _id { get; set; }
    public string name { get; set; }
    public string gender { get; set; }
    // tunables实际是数组,改为对应类型
    public List<Tunable> tunables { get; set; }
    public string difficulty { get; set; }
    public string height { get; set; }
}

public class Tunable
{
    // 根据API返回的tunables字段结构补充属性,例如:
    public string name { get; set; }
    public string value { get; set; }
}

第二步:修改API调用代码

将反序列化目标改为数组或列表类型:

var options = new RestClientOptions("https://dbd.tricky.lol/api");
var client = new RestClient(options);
// 反序列化为List<Killer>或Killer[]
var response = await client.GetJsonAsync<List<Killer>>("characters?id=Chuckles");

// 取第一个元素作为目标角色
var targetKiller = response?.FirstOrDefault();

额外验证:检查异步上下文

确保调用代码在标记为async的方法中执行,否则await会导致编译错误或运行时异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:40:22