使用 cURL 发送 JSON 时如何保留换行符?
How to preserve line breaks when sending JSON using cURL?
以下几乎可以工作,但 message
属性 中的换行符未保留。
output="$(ls -la /home/john | gpg --armor --encrypt --recipient john@example.net)"
curl \
--request POST \
--url https://api.example.net/sendmail \
--header 'Content-Type: application/json' \
--data @- << EOF
{
"subject": "Test",
"message": "$output"
}
EOF
感谢您的帮助!
您需要用 \n
替换 JSON 字符串中的所有换行符:
message=${message//$'\n'/\n}
但是,我建议使用像 jq
这样的实用程序,而不是像这样的临时代码。您还需要转义字符串中的双引号和反斜杠,并将 non-ASCII 个字符转换为 \u####
个转义序列。
以下几乎可以工作,但 message
属性 中的换行符未保留。
output="$(ls -la /home/john | gpg --armor --encrypt --recipient john@example.net)"
curl \
--request POST \
--url https://api.example.net/sendmail \
--header 'Content-Type: application/json' \
--data @- << EOF
{
"subject": "Test",
"message": "$output"
}
EOF
感谢您的帮助!
您需要用 \n
替换 JSON 字符串中的所有换行符:
message=${message//$'\n'/\n}
但是,我建议使用像 jq
这样的实用程序,而不是像这样的临时代码。您还需要转义字符串中的双引号和反斜杠,并将 non-ASCII 个字符转换为 \u####
个转义序列。