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

在Azure Logic App中反序列化ServiceBus消息内容遇阻

解决Azure Logic App读取ServiceBus消息时的序列化前缀问题

我之前也碰到过一模一样的问题!你解码后看到的@string3http://schemas.microsoft.com/2003/10...前缀,是因为这条ServiceBus消息是用DataContractSerializer序列化字符串类型内容导致的——这个序列化工具会自动给字符串加上类型标识前缀,所以解码后就带出了这部分额外内容。下面给你两个快速解决的方法:

方式1:用Split函数提取有效JSON内容

如果解码后的字符串格式是 @string3<schema-url>"你的实际JSON内容",直接用双引号分割后取中间的JSON部分就行:

@{json(split(base64ToString(triggerBody()?['ContentData']), '"')[1])}

原理很简单:按双引号把字符串分成三部分,取索引为1的元素就是你要的纯净JSON字符串,再用json()转成Logic App可操作的对象。

方式2:用Replace函数正则匹配移除前缀

如果前缀里的schema URL有细微变化,用正则匹配更稳妥,直接把开头的标识部分替换为空:

@{json(replace(base64ToString(triggerBody()?['ContentData']), '^@string3http://schemas.microsoft.com/2003/10/Serialization/.*?"', ''))}

这个正则会精准匹配从字符串开头到第一个双引号的所有前缀内容,替换后剩下的就是干净的业务JSON。

额外说明

这个前缀本质是DataContractSerializer的类型标记——当发送消息时,如果是把JSON字符串当成字符串类型序列化(而非直接序列化JSON对象),就会自动加上这个标记。如果之后有机会调整消息发送端,改成直接发送JSON对象(而非序列化后的字符串),后续解码就不会再碰到这个问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:01:09