C#如何从JSON文件中获取含指定键值对的节点列表
提取嵌套JSON中符合条件的节点
因为JSON结构可能存在任意层级的嵌套,不管是对象套数组还是数组套对象,用递归遍历是最直接的解决方式——遍历每一个元素,检查是否是包含"find":5的对象,符合条件就收集;如果是对象或数组,就继续深入内部遍历。
用Python实现的话,代码如下:
import json def find_target_nodes(data, target_key="find", target_value=5): result = [] # 处理数组(列表)类型 if isinstance(data, list): for item in data: result.extend(find_target_nodes(item, target_key, target_value)) # 处理对象(字典)类型 elif isinstance(data, dict): # 先检查当前对象是否符合条件 if data.get(target_key) == target_value: result.append(data) # 遍历对象的所有值,继续递归查找 for value in data.values(): result.extend(find_target_nodes(value, target_key, target_value)) # 其他基础类型(数字、字符串、null等)直接跳过 return result # 读取你的JSON文件 with open("your_json_file.json", "r", encoding="utf-8") as f: json_content = json.load(f) # 获取所有符合条件的节点 matched_nodes = find_target_nodes(json_content) # 格式化输出结果 print(json.dumps(matched_nodes, indent=2))
代码说明:
- 递归函数
find_target_nodes会自动适配数组和对象的嵌套结构:遇到数组就逐个遍历元素,遇到对象先检查是否满足"find":5的条件,再遍历对象内部的所有值继续深入查找。 - 针对你给出的示例JSON,运行后会输出你预期的三个节点。
- 这个方法不受嵌套层级限制,不管JSON结构多复杂,都能遍历到所有符合条件的节点。
内容的提问来源于stack exchange,提问作者Nika
相关产品推荐
相关产品推荐

