Node.js生成符合微软翻译API要求的双引号JSON数组求助
解决Microsoft Translator Text API请求体格式问题的方案
核心思路
别用字符串替换手动凑JSON格式,直接用编程语言自带的JSON序列化工具,这是最稳妥的方式——能自动处理引号转义、键名格式问题,还能顺便搞定API的元素数量和字符数限制。
具体实现步骤(以JavaScript为例,其他语言逻辑通用)
- 把带单引号的原始文本整理成普通字符串数组
- 拆分数据以满足API限制:
- 每组最多25个元素
- 每组总字符数(含空格)不超过5000
- 用JSON序列化工具生成合规的请求体
示例代码
// 含单引号的原始字幕数据示例 const rawSubtitles = ["It's a test subtitle", 'Hello world', "Don't miss this line"]; // 处理数据分组并生成请求体的函数 function prepareRequestBodies(rawData) { const requestGroups = []; let currentGroup = []; let currentTotalChars = 0; for (const text of rawData) { const textLen = text.length; // 检查加入当前文本后是否触发限制 if (currentGroup.length >= 25 || currentTotalChars + textLen > 5000) { requestGroups.push(currentGroup); currentGroup = []; currentTotalChars = 0; } currentGroup.push({ Text: text }); currentTotalChars += textLen; } // 加入最后一组未完成的数据 if (currentGroup.length > 0) { requestGroups.push(currentGroup); } // 把每组序列化为符合要求的JSON字符串 return requestGroups.map(group => JSON.stringify(group)); } // 生成可直接用的请求体 const validRequestBodies = prepareRequestBodies(rawSubtitles); // 输出示例:[{"Text":"It's a test subtitle"},{"Text":"Hello world"},{"Text":"Don't miss this line"}] console.log(validRequestBodies[0]);
关键说明
JSON.stringify会自动处理所有格式问题:键名强制用双引号,字符串里的单引号会被正确保留在双引号包裹的内容里,完全符合API要求。- 分组逻辑里的字符数计算要包含文本的所有字符(空格、单引号等),严格匹配API的5000字符上限。
- 如果用Python,直接用
json.dumps()序列化,分组逻辑完全一致;其他语言也都有对应的JSON序列化工具,原理相同。
内容的提问来源于stack exchange,提问作者infinityosman
相关产品推荐
相关产品推荐

