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

C#与JSON.net入门:遍历JObject存储secondUser_id和status

如何在C#中遍历Web API返回的JSON数据提取secondUser_id和status

看起来你已经迈出了解析JSON的第一步,但现在卡在遍历整个user_list数组上了对吧?别担心,我给你两种实用的方法,你可以根据自己的习惯来选:

方法一:基于Newtonsoft.Json的JArray遍历(适配你当前的代码)

你现在用的是Newtonsoft.Json(也就是Json.NET),直接把user_list转换成JArray,然后用foreach循环逐个处理就行:

string jsonUrl = GetJSON("url");
JObject UsersJObject = JObject.Parse(jsonUrl);
// 将user_list转换为JArray类型,方便遍历
JArray userList = (JArray)UsersJObject["user_list"];

// 遍历数组中的每个用户对象
foreach (JObject userObj in userList)
{
    // 提取需要的字段
    string secondUserId = userObj["secondUser_id"].ToString();
    string status = userObj["status"].ToString();
    
    // 这里可以把值存储到集合里,比如List<T>,示例:
    // yourDataList.Add(new { SecondUserId = secondUserId, Status = status });
    
    Console.WriteLine($"SecondUser ID: {secondUserId}, Status: {status}");
}

关键步骤说明:

  • 把UsersJObject["user_list"]强制转为JArray,因为它本质是JSON数组类型
  • 用foreach循环遍历数组中的每一个JObject(对应单个用户的信息)
  • 通过字段名索引提取secondUser_id和status,按需转换为你需要的类型(比如字符串、整数)
  • 提取后就可以存入自定义集合或者进行后续业务处理

方法二:反序列化为强类型对象(更推荐,代码更易维护)

如果你的JSON返回结构是固定的,强烈推荐定义对应的实体类,把JSON直接反序列化为对象列表,这样代码可读性更高,还能避免拼写错误:

第一步:定义匹配JSON结构的实体类

// 单个用户的信息实体
public class UserItem
{
    public string user_id { get; set; }
    public string secondUser_id { get; set; }
    public string member_since { get; set; }
    public string member_since_date { get; set; }
    public string function { get; set; }
    public string rank_int { get; set; }
    public string status { get; set; }
}

// 整个JSON响应的实体
public class UserResponse
{
    public List<UserItem> user_list { get; set; }
    public int returned { get; set; }
}

第二步:反序列化并遍历数据

string jsonUrl = GetJSON("url");
// 直接将JSON字符串反序列化为UserResponse对象
UserResponse response = JsonConvert.DeserializeObject<UserResponse>(jsonUrl);

// 遍历用户列表,提取目标字段
foreach (UserItem item in response.user_list)
{
    string secondUserId = item.secondUser_id;
    string status = item.status;
    
    // 存储数据示例:
    // yourDataList.Add(new { SecondUserId = secondUserId, Status = status });
    
    Console.WriteLine($"SecondUser ID: {secondUserId}, Status: {status}");
}

为什么推荐这种方式?

  • 强类型检查:编译阶段就能发现字段名拼写错误,避免运行时异常
  • 代码更直观:直接通过对象属性访问字段,不用写userObj["xxx"]这种字符串索引
  • 易维护:后续JSON字段有变更时,只需要修改实体类的属性即可

小提醒

别忘了确保你的项目已经安装了Newtonsoft.Json NuGet包,如果没装,在NuGet包管理器里搜索安装就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:44:46