You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向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结构的引号等字符也转义,导致请求失效。正确流程:

    1. 读取所有文本文件,拼接内容到Body变量;
    2. 对Body执行JSON转义处理;
    3. 将转义后的Body替换到JSON模板的@Value(Body)位置;
    4. 补充必填的queryParam参数,发送API请求。
  • 修复queryParam缺失问题
    错误信息明确指出queryParam字段必填,需要在API请求中添加这个参数(具体值参考Desk Alerts API文档),否则即使JSON格式正确,请求仍会失败。

内容的提问来源于stack exchange,提问作者seuadr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 18:26:14