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

如何使用jq工具将指定JSON数据格式化为目标文本格式

使用jq将特定JSON格式转换为自定义文本格式

原始JSON输入

{
  "metric": {
    "container": "container1",
    "namespace": "namespace1",
    "pod": "pod1"
  },
  "values": [
    [1664418600, "1"],
    [1664418900, "2"],
    [1664419200, "6"],
    [1664419500, "8"],
    [1664419800, "7"],
    [1664420100, "9"]
  ]
}
{
  "metric": {
    "container": "container2",
    "namespace": "namespace2",
    "pod": "pod2"
  },
  "values": [
    [1664420100, "1"]
  ]
}

期望输出格式

container=container1,namespace=namespace1,pod=pod1
1 1664418600
2 1664418900
6 1664419200
8 1664419500
7 1664419800
9 1664420100
container=container2,namespace=namespace2,pod=pod2
1 1664420100

jq实现命令

直接执行这条jq命令即可完成转换:

jq -r '(.metric | to_entries | map("\(.key)=\(.value)") | join(",")) , (.values[] | "\(.[1]) \(.[] | tonumber)")' input.json

命令说明

  • -r:让jq输出原始字符串,避免JSON格式的引号和转义字符
  • .metric | to_entries:把metric对象转换为键值对数组,方便后续拼接
  • map("\(.key)=\(.value)") | join(","):将每个键值对拼成key=value格式,再用逗号连接成一行标签
  • ,:连接前后两个输出逻辑,先输出标签行,再输出对应的数据行
  • .values[] | "\(.[1]) \(.[] | tonumber)":遍历values中的每个数组,把数值放在前面、转成数字的时间戳放在后面,拼成值 时间戳的格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:20:12