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

如何使用jq将嵌套JSON对象扁平化为制表符分隔结构?

使用jq将嵌套JSON扁平化为制表符分隔格式

原始JSON结构

{
    "id":1,
    "activities":[
       {"time":1659800397,"cities":["london","paris"],"type":1},
       {"time":1659800411,"cities":["rome"],          "type":2}
     ]
}

目标格式(制表符分隔)

id	time	cities	type
1	1659800397	london	1
1	1659800397	paris	1
1	1659800411	rome	2

jq实现命令

jq -r '["id", "time", "cities", "type"], (.activities[] | .cities[] | [.id, .time, ., .type]) | @tsv' input.json

命令解释

  • -r:输出原始文本(去除JSON字符串引号)
  • ["id", "time", "cities", "type"]:生成表头行
  • .activities[]:遍历activities数组中的每个活动对象
  • .cities[]:遍历每个活动内的cities数组,将每个城市拆分为单独行
  • [.id, .time, ., .type]:构造每行的字段数组:
    • .id:引用顶层的id值
    • .time/.type:引用当前活动对象的对应字段
    • .:指代当前遍历到的城市名称
  • @tsv:将数组转换为制表符分隔的字符串

若需从标准输入读取JSON,可改用管道:

cat input.json | jq -r '["id", "time", "cities", "type"], (.activities[] | .cities[] | [.id, .time, ., .type]) | @tsv'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:03:26