Logic Apps中拆分HTTP响应体字符串失败问题求助
解决Logic Apps中Split HTTP返回内容失败的问题
问题根源
你碰到的问题是因为HTTP动作返回的内容里,换行符不是你预期的LF(\n),而是以下两种情况之一:
- 字面量的
\n字符(实际是转义后的\\n,在字符串中显示为\n) - Windows风格的CRLF(
\r\n)换行符
这两种情况都会导致split('\n')无法正确匹配拆分,最终把整个字符串作为数组唯一元素返回。
解决方案
1. 处理字面量\n的情况
如果HTTP返回的内容里\n是作为文本字符存在(比如返回的是带转义换行的JSON字符串),先把转义的\\n替换成实际换行符,再拆分:
split(replace(body('HTTP'), '\\n', '\n'), '\n')
2. 处理CRLF换行的情况
如果返回内容是用\r\n分隔的文本,直接用\r\n作为拆分符:
split(body('HTTP'), '\r\n')
要是不确定换行类型,可以统一把\r\n替换成\n再拆分,兼容两种换行格式:
split(replace(body('HTTP'), '\r\n', '\n'), '\n')
3. 清理末尾空元素
拆分后如果数组最后一项是空字符串(因为原内容末尾带换行),可以用以下方式去除:
take(split(replace(body('HTTP'), '\\n', '\n'), '\n'), sub(length(split(replace(body('HTTP'), '\\n', '\n'), '\n')), 1))
或者用更简洁的索引截取:
split(replace(body('HTTP'), '\\n', '\n'), '\n')?[0..sub(length(split(replace(body('HTTP'), '\\n', '\n'), '\n')),2)]
快速验证
先添加一个「Compose」动作,输入body('HTTP')查看实际内容格式,确认换行符类型后再选择对应方案。
内容的提问来源于stack exchange,提问作者ajnabz
相关产品推荐
相关产品推荐

