如何使用JObject提取数据?将cells值拆分至三个独立列表
提取JObject中Cells数据到独立列表的解决方案
基础遍历实现
确保已安装Newtonsoft.Json NuGet包,通过逐层遍历的方式提取数据:
using Newtonsoft.Json.Linq; using System.Collections.Generic; // 假设已将JSON字符串解析为JObject,命名为spreadsheetJObj List<int> columnIds = new List<int>(); List<int> rowIds = new List<int>(); List<string> values = new List<string>(); // 遍历所有行 foreach (JToken row in spreadsheetJObj["rows"]) { // 遍历当前行的所有单元格 foreach (JToken cell in row["cells"]) { columnIds.Add((int)cell["columnId"]); rowIds.Add((int)cell["rowId"]); values.Add((string)cell["value"]); } }
LINQ简洁实现
如果偏好更简洁的写法,可使用LINQ扁平化提取:
using Newtonsoft.Json.Linq; using System.Collections.Generic; using System.Linq; // 提取columnId列表 var columnIds = spreadsheetJObj["rows"] .SelectMany(row => row["cells"]) .Select(cell => (int)cell["columnId"]) .ToList(); // 提取rowId列表 var rowIds = spreadsheetJObj["rows"] .SelectMany(row => row["cells"]) .Select(cell => (int)cell["rowId"]) .ToList(); // 提取value列表 var values = spreadsheetJObj["rows"] .SelectMany(row => row["cells"]) .Select(cell => (string)cell["value"]) .ToList();
空值处理(可选)
若JSON中存在字段为null的情况,可添加空值判断避免异常:
values.Add(cell["value"]?.ToString() ?? string.Empty);
内容的提问来源于stack exchange,提问作者aceas
相关产品推荐
相关产品推荐

