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

如何通过Bash脚本将JSON数据转换为无空格单行字符串?

正确的Bash脚本实现方法

直接用jq的-c(compact输出)选项就能搞定,这是处理JSON最靠谱的方式——既能把格式化的多行JSON转成单行,还会严格遵守JSON语法,不会乱删字符串内部的合法空格。

核心命令示例

处理文件中的JSON

jq -c . your_input.json > compact_output.json

从管道或变量处理

如果JSON内容存在变量里,或者通过管道传递:

# 示例格式化JSON变量
formatted_json='{
  "auths": [
    {"username": "james", "token": "abc123"},
    {"username": "emma", "token": "def456"}
  ]
}'

# 转换为单行紧凑JSON(字符串内部空格会保留)
compact_json=$(echo "$formatted_json" | jq -c .)
echo "$compact_json"

为什么之前的方法不行

你之前用tr结合jq -R .的问题在于:

  • tr是盲删所有空格,会把JSON字符串里的合法空格也删掉(比如"name": "James Taylor"会变成"name":"JamesTaylor",直接破坏数据)
  • jq -R是按原始文本行读取,不是解析JSON结构,处理出来的结果根本不是合法的JSON对象,自然会出现键值间残留空格的问题

用jq -c .的话,它会先完整解析JSON结构,再输出紧凑的单行格式,完全符合JSON规范,还能保留字符串内部的必要空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:45:37