如何使用jq将多层嵌套JSON转换为CSV并提取二级嵌套字段
解决方案
你只需要修改map()部分的字段构造逻辑,显式提取company下的嵌套字段并映射为你需要的CSV列名即可,修改后完整命令如下:
jq -r '.data | map({eventDate, ruleCode, ruleName, summary, oldValue, newValue, companyName: .company.name, companyCountryCode: .company.countryCode}) | (first | keys_unsorted) as $keys | map([to_entries[] | .value]) as $rows | $keys,$rows[] | @csv' input.json > output.csv
改动说明
- 原
map里仅构造了一级字段,现在新增了两个自定义字段:companyName:取值为嵌套节点.company.namecompanyCountryCode:取值为嵌套节点.company.countryCode
- 后续的表头提取、行转换、CSV格式化逻辑完全不需要修改,新增的字段会自动按顺序加入表头和每一行的输出,
@csv会自动处理空值、字符串转义等问题。
内容的提问来源于stack exchange,提问作者user2630477
相关产品推荐
相关产品推荐

