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

如何在Thingsboard CE中将XML遥测转JSON?优先用TBEL或网关转换器

在Thingsboard CE中将XML遥测数据转换为JSON的两种方法

一、优先用TBEL实现(规则链内处理)

既然你已经在规则链里确认REST响应的结构化XML是正常的,直接用TBEL内置的xmlToJson()函数就能完成转换,步骤很直接:

  1. 在规则链中,找到处理REST API响应的后续节点(比如添加一个脚本节点,或者直接在REST调用节点的响应处理逻辑里配置)
  2. 在TBEL表达式中调用转换函数,把REST响应的XML内容传入:
    xmlToJson(metadata.restResponse)
    
    这里的metadata.restResponse就是你调试时看到的XML字符串,TBEL会自动将其解析为标准JSON对象。
  3. 把转换后的JSON赋值给消息体,比如设置msg = xmlToJson(metadata.restResponse),之后就可以用遥测上传节点把这个JSON作为设备遥测数据上报到Thingsboard。

举个实际场景的例子:如果你的XML响应是

26.5 58 1013

转换后得到的JSON会是:

{
  "telemetry": {
    "temperature": "26.5",
    "humidity": "58",
    "pressure": "1013"
  }
}

如果需要提取具体字段直接作为遥测键值对,还可以在TBEL里进一步处理,比如{"temp": xmlToJson(metadata.restResponse).telemetry.temperature}。

二、用Thingsboard Gateway转换器实现

也可以通过网关完成XML到JSON的转换,适合需要在数据进入Thingsboard之前就完成格式转换的场景,步骤如下:

  1. 打开网关的配置文件(通常是thingsboard.yml或者单独的converters配置文件),添加一个自定义脚本转换器。
  2. 选择脚本类型(JavaScript或Python),编写XML转JSON的逻辑。比如用JavaScript脚本的话,可以利用网关内置的XML解析能力:
    function convertToJson(xmlString) {
        // 简单示例:解析结构化XML为JSON
        const parser = new DOMParser();
        const xmlDoc = parser.parseFromString(xmlString, "text/xml");
        const telemetry = {};
        telemetry.temperature = xmlDoc.getElementsByTagName("temperature")[0].textContent;
        telemetry.humidity = xmlDoc.getElementsByTagName("humidity")[0].textContent;
        return telemetry;
    }
    // 网关会自动传入获取到的XML数据,这里处理后返回JSON
    return convertToJson(msg.payload);
    
  3. 配置对应的数据源(比如HTTP数据源,设置好目标API的调用地址和参数),将这个转换器与数据源关联。网关在获取到API返回的XML后,会自动执行转换脚本,把结果以JSON格式上报到Thingsboard。

注意事项

  • TBEL方法更轻量化,适合规则链内的临时转换需求,不需要额外部署组件;
  • 网关转换器适合长期、批量的数据源接入,能在数据传输到TB前完成格式统一,减轻规则链的处理压力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:36:05