C#中高效提取嵌套JSON中指定条件的interest属性值的方法
高效提取指定条件的interest值方案
可以直接利用Newtonsoft.Json(Json.NET)的JsonPath查询能力,一次性定位并提取所有符合条件的interest值,无需手动循环,底层由库优化实现,效率更高。
核心实现代码
JObject json = JObject.Parse(guestJsonResponse); // 使用JsonPath直接筛选所有type为"SEARCH"的event对应的interest值 var interests = json.SelectTokens("$.sessions[*].events[?(@.type == 'SEARCH')].arbitraryData.interest") .Select(token => token.ToString()) .ToList();
代码解释
- JsonPath表达式解析:
$.sessions[*]:定位到根节点下的sessions数组的所有元素.events[?(@.type == 'SEARCH')]:筛选每个session下events数组中type等于"SEARCH"的元素.arbitraryData.interest:最终定位到目标interest字段
SelectTokens方法会返回所有匹配的JToken集合,再通过Select转换为字符串列表即可。
空值兼容处理(可选)
如果存在event没有arbitraryData或interest字段的情况,可以添加空值过滤:
var interests = json.SelectTokens("$.sessions[*].events[?(@.type == 'SEARCH')].arbitraryData.interest") .Where(token => token != null) .Select(token => token.ToString()) .ToList();
内容的提问来源于stack exchange,提问作者Jey
相关产品推荐
相关产品推荐

