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

如何使用jq解析嵌套JSON并提取字段生成新键调整结构

你遇到的Cannot index array with string "epics"报错,核心原因是没有先遍历最外层的JSON数组,直接对数组整体操作嵌套字段导致的。

可直接使用的jq命令

jq 'map(. + {
  assigneeId: .assignee.id,
  assigneeName: "\(.assignee.firstName) \(.assignee.lastName)",
  epicsID: .epics[0].id
} | del(.assignee, .epics))' 你的输入文件.json

命令说明

  • map():用来遍历最外层数组内的每一个对象,所有结构调整操作都会针对单个对象执行,避免数组索引错误
  • . + {新字段集合}:在保留原有普通字段(如id、location)的基础上,新增三个自定义字段:
    • assigneeId:直接提取assignee嵌套对象的id值
    • assigneeName:通过jq字符串插值语法拼接firstName和lastName,中间保留空格
    • epicsID:提取epics数组第一个元素的id值。如果你的epics数组可能存在多个元素,需要提取所有id组成数组,可以将这部分修改为epicsID: [.epics[].id]
  • del(.assignee, .epics):删除原始的两个嵌套字段

如果需要将处理后的结果直接保存为新文件,可以追加重定向输出:

jq 'map(. + {assigneeId: .assignee.id, assigneeName: "\(.assignee.firstName) \(.assignee.lastName)", epicsID: .epics[0].id} | del(.assignee, .epics))' input.json > output.json

注:你给出的预期输出中assingeeName属于拼写错误,上述命令生成的是正确拼写assigneeName,如果确实需要该拼写的键名,直接修改命令里的键名即可。


内容的提问来源于stack exchange,提问作者MeanOtter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:15:08