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

如何使用jq将指定JSON转换为c/d前置、其余列排序的表格?

使用jq将JSON数据转换为指定格式的表格

问题描述

现有JSON数据:

{"data": [{"a": 1, "d": 2, "c": 3, "b": 4}, {"a": 5, "d": 6, "c": 7, "b": 8, "e": 9}]}

需要转换为以下格式的表格:

c   d   a   b   e
3   2   1   4   <absent>
7   6   5   8   9

具体要求:

  • 将列c和d移至表格开头
  • 其余所有列按字母顺序排序

解决方案

可以使用以下jq命令实现:

.data
| (map(keys) | add | unique) as $allKeys
| ($allKeys - ["c", "d"]) | sort as $sortedRest
| ["c", "d"] + $sortedRest as $columns
| $columns,
  (.[] | $columns | map(.[.] // "<absent>"))
| @tsv

命令解释

  1. .data:提取JSON中的数据数组
  2. (map(keys) | add | unique) as $allKeys:收集所有对象的键并去重,得到所有列名
  3. ($allKeys - ["c", "d"]) | sort as $sortedRest:排除c和d后,将剩余列名按字母排序
  4. ["c", "d"] + $sortedRest as $columns:构造最终的列顺序,把c、d放在开头,后面跟排序后的剩余列
  5. $columns, (.[] | $columns | map(.[.] // "<absent>")):先输出列名行,再遍历每个对象,按列顺序提取值,不存在的用<absent>填充
  6. @tsv:将结果转换为制表符分隔的格式,显示时表现为多空格分隔,符合需求格式

运行效果

执行上述jq命令后,输出结果与要求的表格格式完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:14:58