如何在WSO2 Enterprise Integrator中提取JSON Payload键名并转换负载格式
WSO2 EI 动态转换TTN上报负载实现方案
核心逻辑
通过Script Mediator调用原生JavaScript遍历decoded_payload节点的所有动态键值对,无需硬编码传感器字段名,新增上报字段时无需修改中介器逻辑即可自动适配。
具体实现步骤
- 在处理TTN Webhook请求的 mediation 序列中添加Script Mediator,配置如下:
<script language="js"><![CDATA[ // 读取传入的原始JSON负载 var payload = mc.getPayloadJSON(); var decodedPayload = payload.decoded_payload || {}; var sensorsArray = []; // 遍历decoded_payload所有动态键,自动生成对应结构 for (var sensorName in decodedPayload) { // 过滤原型链继承属性,只取对象自身的字段 if (decodedPayload.hasOwnProperty(sensorName)) { sensorsArray.push({ "SensorName": sensorName, "SensorData": decodedPayload[sensorName] }); } } // 生成目标格式负载并写回消息上下文 var result = { "Sensors": sensorsArray }; mc.setPayloadJSON(result); ]]></script>
- 后续节点直接使用转换后的负载即可:
转换后的Sensors数组会直接保存在消息体中,你可以直接对接DB Report Mediator或者数据服务,将数组批量写入SQL数据库,无需做额外字段适配。
适配场景说明
该方案支持任意新增的传感器上报字段,比如后续TTN上报新增distance、pressure等字段时,脚本会自动提取为对应的SensorName,无需调整现有中介器配置。
内容的提问来源于stack exchange,提问作者will valintine
相关产品推荐
相关产品推荐

