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

Azure Function被Logic App调用时换行符重复问题求助

解决Logic App调用Azure Function时换行符重复的问题

可能的解决方法:

1. 规范Azure Function的响应序列化方式

不要手动拼接JSON字符串,直接用官方序列化库处理响应对象,避免手动转义导致的二次转义问题。
以C#为例,直接返回强类型对象让Function Runtime自动处理序列化:

var responseObj = new {
    IsSuccess = true,
    StatusCode = 200,
    Content = ":20:XXXXXXXXXXXXXXX\n:25:XXXXXXXXXXXXXXXXXXX\n:28C:XXXXX/XXX\n-"
};
return new OkObjectResult(responseObj);

避免自行调用JsonConvert.SerializeObject再返回字符串,这种手动操作容易让Logic App对换行符重复转义。

2. 检查Logic App的响应处理逻辑

确认Logic App里是否对响应的Content字段做了额外的字符串处理(比如替换、格式化),排查是否有步骤意外将单个\n替换成了\n\n。
直接使用响应的原始值,比如用body('HTTP')?['Content']直接取值,跳过不必要的文本转换操作。

3. 明确设置JSON序列化的转义规则

在Azure Function中,指定序列化配置,强制控制换行符的转义行为。比如用System.Text.Json时:

var options = new JsonSerializerOptions
{
    Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
    WriteIndented = false
};
var jsonString = JsonSerializer.Serialize(responseObj, options);
return new ContentResult
{
    Content = jsonString,
    ContentType = "application/json; charset=utf-8",
    StatusCode = 200
};

关闭自动缩进也能避免额外换行符的插入。

4. 尝试Base64编码传输(可选)

如果纯文本内容特殊字符较多,可在Azure Function中将Content转为Base64字符串,在Logic App中再解码:

  • Function端:Content = Convert.ToBase64String(Encoding.UTF8.GetBytes(originalContent))
  • Logic App端:使用base64ToString(body('HTTP')?['Content'])函数解码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:40:55