如何将RestResponse转换为List<string>并提取ITAD API标题?
解决方案
1. 优先使用序列化(推荐方案)
不要直接处理原始响应字符串,基于RestSharp的RestResponse(从你提到的GetAsync()和RestResponse推断你使用的是RestSharp库),可以直接将响应序列化为强类型对象,这比手动拆分字符串更可靠、易维护。
首先根据ITAD Map API的响应结构,定义对应的实体类(可参考官方文档的响应示例反推结构):
public class ItadGameMapResponse { public Dictionary<string, GameItem> Data { get; set; } } public class GameItem { public string Title { get; set; } // 若不需要其他字段,仅保留Title即可 }
之后直接通过泛型方法反序列化响应,而非提取原始字符串:
var client = new RestClient("https://api.isthereanydeal.com"); var request = new RestRequest("/v01/game/map/?key=你的密钥&shop=steam"); var response = await client.GetAsync<ItadGameMapResponse>(request); // 提取所有标题到List<string> List<string> titles = response.Data.Values.Select(item => item.Title).ToList();
这种方式能避免API响应格式小幅变动导致的解析失败,同时代码可读性更强。
2. 手动解析响应字符串(不推荐)
如果一定要操作原始响应字符串,绝对不要用盲目的String.Split,因为标题可能包含特殊字符,响应格式变动会直接导致解析错误。正确的做法是用JSON解析库(比如System.Text.Json或Newtonsoft.Json)解析后提取字段:
// 使用System.Text.Json的示例 var jsonContent = response.Content; using var jsonDoc = JsonDocument.Parse(jsonContent); var titles = jsonDoc.RootElement.GetProperty("data") .EnumerateObject() .Select(p => p.Value.GetProperty("title").GetString()) .ToList();
关于内置方法
RestResponse本身没有直接转换为List<string>的内置方法,因为API响应是结构化的JSON数据,必须根据响应结构进行解析。最合理的方式就是通过序列化到强类型对象,或使用JSON解析库提取目标字段。
内容的提问来源于stack exchange,提问作者Email User
相关产品推荐
相关产品推荐

