在C#中解析REST API返回的JSON文件夹列表获取id问题
问题分析与解决方案
你的JSON返回结果是数组结构(用[]包裹),但你用了JObject.Parse来解析单个JSON对象,这是导致失败的核心原因。下面提供两种可行的解决方法:
方法一:直接用JArray提取所需字段
使用JArray.Parse解析数组,然后遍历每个元素提取id和name:
// 获取API返回的JSON内容 var jsonContent = ((RestSharp.RestResponseBase)resultat.Value).Content; // 解析JSON数组 var folderArray = JArray.Parse(jsonContent); // 提取每个文件夹的id和name,转换成匿名对象列表 var folderInfoList = folderArray.Select(folder => new { Id = (int)folder["id"], Name = (string)folder["name"] }).ToList();
方法二:创建实体类进行强类型反序列化
这种方式类型更安全,便于后续维护:
- 定义文件夹实体类(只保留你需要的字段即可):
public class Folder { public int Id { get; set; } public string Name { get; set; } // 如果后续需要其他字段,比如owner、creation等,直接在这里添加对应属性即可 }
- 反序列化JSON数组为实体类列表:
var jsonContent = ((RestSharp.RestResponseBase)resultat.Value).Content; var folderList = JsonConvert.DeserializeObject<List<Folder>>(jsonContent); // 访问示例:遍历列表获取每个文件夹的id和name foreach(var folder in folderList) { Console.WriteLine($"文件夹ID:{folder.Id},名称:{folder.Name}"); }
内容的提问来源于stack exchange,提问作者SylvainKrier
相关产品推荐
相关产品推荐

