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

C#中如何通过Steam游戏名称获取对应完整App对象

如何通过Steam API根据游戏名称获取对应的App ID和完整对象

你之前觉得反序列化无效是个误区——Steam API返回的JSON结构是固定的,完全可以用类来映射,反而比手动解析JSON更可靠。下面是具体实现步骤(以C#为例,其他语言逻辑类似):

1. 定义对应JSON结构的类

Steam API返回的JSON层级清晰,只需定义几个简单类完成映射:

public class SteamAppListResponse
{
    public AppListContainer applist { get; set; }
}

public class AppListContainer
{
    public List<SteamApp> apps { get; set; }
}

public class SteamApp
{
    public int appid { get; set; }
    public string name { get; set; }
}

2. 请求API并反序列化数据

用HTTP客户端获取API响应,再反序列化为自定义类对象:

using System.Net.Http;
using System.Text.Json;

var httpClient = new HttpClient();
var response = await httpClient.GetAsync("https://api.steampowered.com/ISteamApps/GetAppList/v2/");
response.EnsureSuccessStatusCode(); // 确保请求成功
var jsonContent = await response.Content.ReadAsStringAsync();

// 反序列化到自定义类
var steamAppData = JsonSerializer.Deserialize<SteamAppListResponse>(jsonContent);

3. 根据游戏名称查找目标对象

可根据需求选择精确或模糊匹配:

  • 精确匹配(区分大小写):找到名称完全一致的游戏
var exactMatch = steamAppData.applist.apps.FirstOrDefault(app => app.name == "Warframe");
if (exactMatch != null)
{
    Console.WriteLine($"找到App ID: {exactMatch.appid}, 名称: {exactMatch.name}");
}
  • 模糊匹配(忽略大小写):找到名称包含目标关键词的所有游戏
string targetName = "Warframe";
var fuzzyMatches = steamAppData.applist.apps
    .Where(app => app.name.IndexOf(targetName, StringComparison.OrdinalIgnoreCase) >= 0)
    .ToList();

foreach (var app in fuzzyMatches)
{
    Console.WriteLine($"App ID: {app.appid}, 名称: {app.name}");
}

关键注意事项

  • 该API返回的游戏列表非常庞大(数万条数据),首次请求后务必缓存结果(比如存本地JSON文件或数据库),避免重复调用浪费资源
  • 可能存在名称相似甚至相同的游戏(如不同地区版本、测试服),建议返回匹配列表而非单个对象,让用户自行选择
  • 匹配时优先使用忽略大小写的逻辑,避免因大小写差异(如"warframe"和"Warframe")找不到目标

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:25:45