JS Lambda中将带\r\n的text/plain转为JSON的实现方法
在AWS Lambda的JavaScript环境中转换text/plain请求体为结构化JSON
需求说明
收到的请求体是text/plain类型,包含以\r\n分隔的键值对(格式为Key=Value),需要将其转换为嵌套的JSON结构,把原body字符串替换为键值对对象。
实现代码
// 示例输入 const lambdaInput = {"body": "TokenId=dsbfjj&s=b+j%f-b*sfwe1we\r\nTaskid=\r\nvalueP=12345\r\nvalueN=89542fgdfgdf\r\n"}; // 解析text/plain格式的body为键值对对象 const parsePlainBody = (plainText) => { // 分割所有行,兼容\r\n和\n两种换行符 const lines = plainText.split(/\r?\n/); const parsedData = {}; lines.forEach(line => { // 跳过空行 if (!line.trim()) return; // 找到第一个=的位置,避免值中包含=导致分割错误 const equalPos = line.indexOf('='); if (equalPos === -1) return; const key = line.slice(0, equalPos).trim(); const value = line.slice(equalPos + 1).trim(); parsedData[key] = value; }); return parsedData; }; // 生成目标格式的JSON const lambdaOutput = { body: parsePlainBody(lambdaInput.body) }; // 打印结果(Lambda中可直接返回lambdaOutput) console.log(JSON.stringify(lambdaOutput, null, 2));
代码关键点
- 换行符兼容:使用正则
/\r?\n/分割,同时支持Windows(\r\n)和Unix(\n)换行格式 - 空行处理:跳过分割后产生的空行(比如输入末尾的
\r\n) - 鲁棒性:按第一个
=分割键值对,避免值中包含=时出现解析错误 - 空格处理:对键和值做
trim(),自动去除前后多余空格
运行结果
执行代码后会输出符合要求的结构化JSON:
{ "body": { "TokenId": "dsbfjj&s=b+j%f-b*sfwe1we", "Taskid": "", "valueP": "12345", "valueN": "89542fgdfgdf" } }
内容的提问来源于stack exchange,提问作者Rafael Pereira
相关产品推荐
相关产品推荐

