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

如何使用JQ将Bash多行变量转换为可用于Curl的JSON字符串

解决方案

步骤1:使用JQ将多行变量转换为合法JSON字符串

直接使用JQ的原始输入模式处理变量,自动完成所有特殊字符(换行、双引号、空格等)的转义,无需手动处理:

JSON_FPR_LOW=$(jq -R -s '.' <<< "$FPR_LOW")

参数说明:

  • -R:开启原始输入模式,不会把输入内容当做JSON解析,直接当做普通字符串处理
  • -s:将所有输入内容(包括所有换行)合并为单个字符串处理
  • 注意$FPR_LOW必须用双引号包裹,否则变量里的换行、连续空格会被Bash自动合并

步骤2:正确使用生成的字符串发起Curl请求

不建议手动拼接JSON结构,容易因为转义问题出错,推荐直接用JQ生成完整的请求体:

# 直接生成完整的请求体JSON,避免手动拼接出错
REQUEST_BODY=$(jq -R -s '{ "body": . }' <<< "$FPR_LOW")

# 发起请求,直接传入生成的完整请求体即可
curl 你的其他请求参数 -d "$REQUEST_BODY" 你的接口地址

如果一定要单独使用JSON_FPR_LOW,请确保curl的参数用双引号包裹,且变量放在双引号内:

# 不推荐,手动拼接容易出错,仅做参考
curl 你的其他请求参数 -d "{ \"body\": $JSON_FPR_LOW }" 你的接口地址

验证方法

你可以执行以下命令查看转义后的效果,确认所有特殊字符都被正确转义:

echo "$JSON_FPR_LOW"

可以看到输出里的双引号会自动加反斜杠转义,换行符会转换为\n,完全符合JSON字符串的语法规范,不会出现请求格式异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:57:02