咨询:在Bash中提取JSON文件subtasks区段subtask:true内容的方法
嘿,我来帮你解决这个提取JSON数据的问题!你说之前尝试提取subtasks区段里subtask值为true的部分却一直得到false的结果,大概率是过滤逻辑的细节没处理对。我给你两种常用的实现方案,你可以根据自己的使用场景来选:
方法一:用Python处理(适合脚本或程序集成)
首先假设你的JSON结构大概是这样的(如果实际结构不同,调整对应路径即可):
{ "tasks": [ { "name": "主任务1", "subtasks": [ {"id": 1, "subtask": true, "content": "子任务A"}, {"id": 2, "subtask": false, "content": "子任务B"}, {"id": 3, "subtask": true, "content": "子任务C"} ] } ] }
你可以用这段Python代码来精准过滤:
import json # 读取目标JSON文件 with open('your_json_file.json', 'r', encoding='utf-8') as f: json_data = json.load(f) # 初始化存储结果的列表 filtered_subtasks = [] # 遍历主任务(如果你的subtasks直接在根节点,跳过这层循环) for task in json_data.get('tasks', []): # 获取当前主任务下的subtasks数组 subtasks_list = task.get('subtasks', []) # 筛选出subtask值严格为True的条目 true_subtasks = [item for item in subtasks_list if item.get('subtask') is True] filtered_subtasks.extend(true_subtasks) # 打印或保存结果 print(json.dumps(filtered_subtasks, indent=2, ensure_ascii=False))
注意:这里用is True做严格判断,是为了避免把JSON里的1这类"真值"误判成布尔true,如果你的JSON里subtask字段确定是纯布尔值,用== True也可以。
方法二:用jq命令行工具(适合快速批量处理)
如果你习惯用命令行,jq是处理JSON的绝佳工具,一行命令就能搞定:
如果要输出单个条目:
jq '.tasks[].subtasks[] | select(.subtask == true)' your_json_file.json
如果要把结果整理成一个JSON数组:
jq '[.tasks[].subtasks[] | select(.subtask == true)]' your_json_file.json
要是你的subtasks直接在JSON根节点,把命令里的.tasks[]去掉就行,比如:
jq '[.subtasks[] | select(.subtask == true)]' your_json_file.json
内容的提问来源于stack exchange,提问作者Milister
相关产品推荐
相关产品推荐

