LinkedIn Posts API含括号时文本截断问题求助
解决LinkedIn API发布内容含左括号
(时文本被截断的问题 问题复现
调用LinkedIn的posts接口发布内容时,只要文本里包含左括号(,括号及之后的内容会被截断。尝试URL编码会保留转义字符,直接用\(转义会触发API格式错误,手动拼接JSON也报错。
解决方案
核心是按照LinkedIn的规则正确转义括号,同时保证JSON格式合法:
- 双重转义括号
LinkedIn要求左括号(转义为\(,但在JSON字符串中,反斜杠本身需要转义,所以要写成\\(,右括号同理写成\\)。修改后的请求体示例:
{ "author": "urn:li:person:你的用户URN", "commentary": "a line\n\nanother line...\n\n\nThis gets posted \\(it will NOT get cut off from here\\)\nanother line\n", "visibility": "PUBLIC", "distribution": { "feedDistribution": "MAIN_FEED", "targetEntities": [], "thirdPartyDistributionChannels": [] } }
- 批量转义处理
用字符串替换工具自动处理所有括号,避免手动修改出错。比如JavaScript中可以这么写:
const rawText = `a line another line... This gets posted (it will get cut off from here) another line`; // 全局替换左右括号为转义后的格式 const escapedText = rawText.replace(/([()])/g, '\\$1'); const requestBody = { author: "urn:li:person:你的用户URN", commentary: escapedText, visibility: "PUBLIC", distribution: { feedDistribution: "MAIN_FEED", targetEntities: [], thirdPartyDistributionChannels: [] } }; // 发送请求时确保Content-Type为application/json // 用axios的话直接传requestBody即可,它会自动处理JSON序列化
- 排查请求格式问题
之前用JSON.stringify报错,大概率是字段缺失或格式不完整(比如author必须是合法的URN,visibility等必填字段不能少),和转义无关。确保所有必填字段都正确填写后再序列化发送。
为什么之前的方法无效?
- URL编码不适用:LinkedIn的
commentary字段接受纯文本(支持换行),而非URL编码后的内容,所以编码后会保留%20这类转义字符,同时()本身不会被encodeURI转义,依然触发截断。 - 单转义
\(无效:在JSON字符串中,单个反斜杠会被解析器当作转义符,实际传给API的还是原始的(,没起到转义作用;写成\\(后,解析器会把它转为\(,符合LinkedIn的规则,不会截断。
内容的提问来源于stack exchange,提问作者Seb
相关产品推荐
相关产品推荐

