如何在C#中读取HTTP响应并提取用户名及对应积分
解决方案
1. 定义匹配JSON结构的实体类
首先需要创建与HTTP响应JSON结构对应的C#类,才能正确反序列化数据:
// 对应响应根对象的类 public class UserResponse { public int _total { get; set; } public List<User> users { get; set; } } // 对应单个用户信息的类 public class User { public string username { get; set; } public int points { get; set; } }
2. 修改代码完成数据提取与存储
原代码直接将JSON反序列化为List<string>是错误的,因为响应根结构是对象而非字符串数组。修改后的代码如下:
List<string> data = new List<string>(); using (var response = await client.SendAsync(request)) { response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); // 反序列化为自定义的响应类 var userResponse = JsonConvert.DeserializeObject<UserResponse>(body); // 遍历用户列表,将用户名和积分拼接后存入List<string> foreach (var user in userResponse.users) { string userInfo = $"用户名: {user.username}, 积分: {user.points}"; data.Add(userInfo); Debug.Log(userInfo); } }
说明
- 原代码的错误在于试图将包含对象数组的JSON根对象直接反序列化为
List<string>,这会导致反序列化失败。 - 通过定义匹配的实体类,我们可以正确解析整个响应结构,再从中提取用户名和积分信息,拼接成字符串存入目标
List<string>。
内容的提问来源于stack exchange,提问作者user19333311
相关产品推荐
相关产品推荐

