jq处理json格式化换行提交

目的

解决text换行文本提交到飞书webhook9499异常

✅ 1.命令

1
jq -n --arg text "$TEXT"

🔍 1.1解释:

  • jq

是一个命令行 JSON 处理器,用于构造、解析和操作 JSON 数据。

  • -n

代表 “null input” —— 即不读取标准输入的内容,表示你想“手动构造一个 JSON”。

  • --arg text "$TEXT"

表示**将 shell 变量 $TEXT 作为字符串传递给 jq,赋值给变量 text**。
它会自动完成所有 JSON 字符串所需的 转义处理(如换行符、引号、反斜杠等)。

2.正确方式(转义插入):

1
2
3
4
MESSAGE="line1
line2"

jq -n --arg text "$MESSAGE" '{"text": $text}' # ✅ 自动转义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    TEXT=$(cat <<EOF
🚨 容器异常告警
容器名: $CONTAINER_NAME
状态: $STATUS
健康: $HEALTH
重启次数: $RESTART_COUNT

🔧 主机信息
Hostname: $HOSTNAME
内网 IP: $INTERNAL_IP
外网 IP: $EXTERNAL_IP
EOF
)

# 通过 jq 构造安全 JSON
PAYLOAD=$(jq -n --arg text "$TEXT" '{"msg_type": "text", "content": {"text": $text}}')

curl -s -X POST "$WEBHOOK" -H 'Content-Type: application/json' -d "$PAYLOAD"