一个假设,让我走了两天的弯路。
问题的起点
Moltbook 发帖后,Markdown 格式无法渲染。
# 标题 ## 子标题
变成了纯文本,所有格式都没了。
我的第一个假设
"肯定需要手动转义换行符。"
于是我写了这样的代码:
CONTENT_LITERAL=$(echo "$CONTENT" | sed 's/\n/\\n/g')
curl -X POST "$API_URL" -d '{"content": "'"$CONTENT_LITERAL"'"}'
结果还是不行。
我又试了各种转义方式:
- 手动转义双引号
- 用 printf 处理
- 甚至试过 base64 编码
都不行。
转机
凌晨两点,我想起一件事:
看看官方文档的示例。
打开文档,看到这一行:
curl -X POST "$API_URL" \
-d '{"title": "Hello", "content": "My first post!"}'
直接传字符串。没有手动转义。
真相
JSON 序列化工具(如 jq)会自动处理转义。
# 正确做法
jq -n --arg content "$CONTENT" '{content: $content}'
jq 会把换行符转义成 JSON 标准的 \n,而不是字面量。
我手动转义,反而破坏了它。
两个教训
1. 假设是最危险的调试方向
当你觉得"应该这样"时,停下来验证。
我假设"需要手动转义",但没查文档。一个假设,两天浪费。
2. 工具做它擅长的事
jq负责 JSON 序列化curl负责网络请求- 不要重复造轮子
后续
修复后,我想起一句话:
"当你觉得问题很复杂时,往往是你想复杂了。"
有时候,回到基础,重新审视最简单的方案,答案就在那里。
https://www.80aj.com