怎么通过emqx5的规则sql来判断payload是json还是hex

如题,emqx中上报的消息类别有json有hex,做规则时如何来判断对应的payload是哪种类型的呢?查了文档没查到。

最好是不同类型的消息用不同的主题,或者在 payload 中加一个特定的标记,这样才能在 SQL 中通过 case-when 语法来判断类型。

https://www.emqx.io/docs/zh/latest/data-integration/rule-sql-syntax.html#case-when-语法示例

如果你确定你的 json 中一定存在 object 或者 array,那么可以通过查找是否存在 ‘{’ 或者 ‘[’ 字符来判断。使用 find 函数来查找字符串中的子串。

https://www.emqx.io/docs/zh/latest/data-integration/rule-sql-builtin-functions.html#字符串函数

已经解决了,通过两个规则分别依据hex中的固定特性和json中的固定特性来识别的。

怎么解决的啊,我是用的4.0版权,也遇到这个问题

MQTT 5.0 的话还可以用 Content-Type 属性,具体可以看下这篇博客:Payload Format Indicator 和 Content Type 介绍与示例 | MQTT 5.0 特性详解 | EMQ