You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:47:59