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

C#解析Steam API返回JSON提示无法反序列化数据如何解决

核心错误点

你的代码有三处直接导致反序列化失败的逻辑问题:

  • JSON节点路径写错了:返回的JSON根节点下只有response字段,players数组是嵌套在response节点内的,你直接读取jUser["players"]拿到的是空值,根本获取不到玩家数据。
  • 数据类型不匹配:players是数组结构,哪怕接口只返回单个玩家的信息,它也是数组格式,你直接把整个数组反序列化成单个SteamUser实例,必然抛出类型转换错误。
  • 赋值逻辑错误:JsonConvert.DeserializeObject<Models.SteamUser>()本身就返回SteamUser类型的对象,你额外调用.ToString()把对象转成了字符串,再赋值给Models.SteamUser类型的persona变量,类型完全不匹配。
修复步骤
  1. 先确认你的SteamUser模型类属性和接口返回字段对应,参考结构如下:
public class SteamUser
{
    public string steamid { get; set; }
    public int communityvisibilitystate { get; set; }
    public int profilestate { get; set; }
    public string personaname { get; set; }
    public int commentpermission { get; set; }
    public string profileurl { get; set; }
    public string avatar { get; set; }
    public string avatarmedium { get; set; }
    public string avatarfull { get; set; }
    public string avatarhash { get; set; }
    public int personastate { get; set; }
}

如果你的模型用了C#常规的大驼峰命名(比如Personaname、Avatar),给对应属性加上[JsonProperty("JSON字段名")]特性做映射即可,避免字段名不匹配导致取值为空。

  1. 修改接口调用和反序列化代码,修正访问路径、处理数组结构、删掉多余的类型转换:
Models.SteamUser persona;
string httpres;
using (var client = new HttpClient())
{
    string steamurl = "MY HIDDEN URL HERE" + s64;
    var steamapi = new Uri(steamurl);
    // 建议后续改成await异步写法,.Result同步阻塞容易出现上下文死锁问题
    var result = client.GetAsync(steamapi).Result.Content.ReadAsStringAsync().Result;
    httpres = result;
    var jUser = JObject.Parse(result);
    // 按正确路径取到players数组的第一个元素
    var playerToken = jUser["response"]?["players"]?.FirstOrDefault();
    if (playerToken == null)
    {
        // 增加空判断,处理SteamID错误、接口异常返回空数据的场景
        throw new InvalidOperationException("查询不到对应Steam玩家信息");
    }
    persona = playerToken.ToObject<Models.SteamUser>();
}

修改完成后,直接访问persona.personaname就能拿到玩家昵称,persona.avatar就能拿到对应的头像链接。

补充:如果后续需要批量获取多个玩家信息,直接把players数组反序列化成List<SteamUser>即可,不需要单独取第一个元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 08:42:28