向Desk Alerts API发送JSON时的换行符及制表符转义问题求助
JSON转义换行符后消息显示明文
\n的解决方案 问题背景
我用FME Workbench把包含换行符(LF)、回车符(CR)的UTF-8文本打包发送给Desk Alerts的API,原始文本格式如下:
The enhanced alarm included the following information and instructions: ******************************************************************************** blah blah blah blah additional blah blah info blah third line of blah blah blah ******************************************************************************
文本每行末尾都有换行符,且由多文件拼接而成,必须保留换行格式。API的JSON Schema为:
{ "body": "@Value(Body)", "title": "@Value(Subject)", "templateId": 4, "skinId": 1, "isEveryone": true, "recipients": [] }
其中@Value(Body)是包含上述文本的动态变量。发送请求时收到错误:
{ "status": "Error", "errorMessage": "Request model invalid", "data": { "validationErrors": [ "[queryParam] : The queryParam field is required.", "[$.body] : '0x0A' is invalid within a JSON string. The string should be correctly escaped." ] } }
尝试用正则把[\n]替换为\\n后,JSON验证通过,但收到的消息显示明文\n,制表符也存在同样问题。
解决方案
使用FME内置JSON转义工具,避免手动正则替换
手动正则替换容易出现转义层级错误,无法让API正确识别换行。FME提供了专门的JSON转义处理工具:- 用
StringReplacer转换器,选择预设的"Escape JSON Strings"规则,直接对Body变量进行处理; - 或者使用
JSONFormatter转换器,将Body作为字符串输入,输出转义后的合法JSON字符串。
这些工具会自动处理所有需要转义的字符(\n、\r、\t、"等),确保JSON格式合法,同时API解析时能正确还原成换行格式,不会显示明文。
- 用
调整FME变量替换顺序
必须先对Body内容做JSON转义,再将转义后的内容替换到JSON模板中。如果先替换再转义,会把整个JSON结构的引号等字符也转义,导致请求失效。正确流程:- 读取所有文本文件,拼接内容到
Body变量; - 对
Body执行JSON转义处理; - 将转义后的
Body替换到JSON模板的@Value(Body)位置; - 补充必填的
queryParam参数,发送API请求。
- 读取所有文本文件,拼接内容到
修复queryParam缺失问题
错误信息明确指出queryParam字段必填,需要在API请求中添加这个参数(具体值参考Desk Alerts API文档),否则即使JSON格式正确,请求仍会失败。
内容的提问来源于stack exchange,提问作者seuadr
相关产品推荐
相关产品推荐

