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

如何用jq将JSON指定键的输出格式化为紧凑单行形式?

使用jq格式化指定JSON字段为紧凑形式

核心解决方案(优先推荐)

直接通过jq内置过滤器实现,仅将datapoints字段转为紧凑格式,同时保留其他字段的美化缩进:

jq '(.datapoints |= tojson) | fromjson' test.json

如果需要指定缩进空格数(比如2个空格,匹配jq默认美化格式),可添加--indent参数:

jq --indent 2 '(.datapoints |= tojson) | fromjson' test.json

命令说明

  • .datapoints |= tojson:把datapoints字段的嵌套数组转换为紧凑JSON字符串,去除所有换行与多余空格
  • | fromjson:将整个JSON对象重新解析,此时其他字段会遵循jq默认的美化规则显示,而datapoints因从紧凑字符串生成,会保持单行紧凑格式

示例效果

假设test.json原始内容:

{
  "target": "cpu_usage",
  "datapoints": [
    [10.5, 1620000000],
    [12.3, 1620003600],
    [9.8, 1620007200]
  ]
}

执行命令后输出:

{
  "target": "cpu_usage",
  "datapoints": [[10.5,1620000000],[12.3,1620003600],[9.8,1620007200]]
}

备选方案(标准Unix工具结合)

若环境限制无法使用jq高级过滤,可结合jq与sed实现,但该方法依赖固定JSON格式,可靠性不如纯jq方案:

jq . test.json | sed '/"datapoints": \[/,/\]/ { /"datapoints": \[/!{ /\]/!s/^ *//; s/, *$/,/ }; /\]/s/^ *// }'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:40:30