Notification Hub定价层调整后Logic App Parse JSON的Properteis字段为空如何解决
问题原因
- 消息封装结构变更
Notification Hub从免费层升级到基础层后,配套IoT Hub向Event Hub转发消息的封装格式会发生适配调整:免费层中IoT Hub的自定义消息属性直接挂载在triggerBody()根节点的Properties字段下,而基础层为了兼容多租户路由、消息过滤等高级特性,会将自定义属性迁移到triggerBody()?['ApplicationProperties']节点下,系统属性则独立存储在SystemProperties节点,原根节点下的Properties字段默认不再返回内容。 - 拼写容错机制取消
你代码中调用的属性名*Properteis*存在拼写错误,正确属性名应为*Properties*,免费层存在拼写兼容容错逻辑可以匹配到正确字段,但基础层取消了该容错策略,也会导致取值为空。
修复方案
- 调整取值逻辑,将原取值代码替换为适配基础层的结构:
原代码:triggerBody()?['Properteis']
替换后代码:triggerBody()?['ApplicationProperties']
如果你需要同时兼容不同定价层的消息结构,可以使用合并取值逻辑:coalesce(triggerBody()?['Properties'], triggerBody()?['ApplicationProperties'], json(base64ToString(triggerBody()?['ContentData']))?['Properties']) - 修正属性名拼写错误,统一使用正确的
Properties命名避免低级错误。 - 如果Logic App的Event Hub触发器配置了
Content Type为二进制格式,需要先对ContentData做base64解码再取值,示例代码如下:json(base64ToString(triggerBody()?['ContentData']))?['ApplicationProperties'] - 更新Parse JSON步骤的Schema定义,新增
ApplicationProperties和SystemProperties节点的结构规则,避免解析报错。你可以直接取调整定价层后触发器运行的实际输出作为样本,自动生成新的Schema即可。
内容的提问来源于stack exchange,提问作者Tomasz Parka
相关产品推荐
相关产品推荐

