# 1.脚本语法
物联网平台提供的脚本解析器,可加工处理复杂的消息数据后与云产品交互。脚本解析器的能力包括获取消息内容、转换数据格式、处理字符串、组装 JSON 格式数据、处理二进制数据和流转数据等。本文介绍如何编写解析脚本。
# 2.背景信息
物联网平台是基于 Topic 中的数据格式来处理和传递数据的,数据格式的具体内容
物联网平台的脚本解析器类似 JavaScript 语言,编辑脚本的语法参考 JavaScript 语法即可。脚本解析器仅支持 JavaScript 语言的部分语法,详情见下文描述。
# 3.脚本编写说明
本脚本只支持 prodCycleTransformPayload、getProdCycleTopicSuffix 方法,prodCycleTransformPayload 用于做消息的数据转换,getProdCycleTopicSuffix 用于指定云产品流转的 Topic 后缀
prodCycleTransformPayload 脚本编写方法如下:
- 必须使用 parse 函数将参数转为 JSON 格式对象
var obj = JSON.parse(rawData);
- 给 JSON 格式对象添加其他属性
obj.msg = "foo";
- JSON 格式对象包装到指定数据层
var jsonObj = {data: obj};
- 必须使用 stringify 函数将参数转为字符串对象
var result = JSON.stringify(jsonObj);
- 修改 prodCycleTransformPayload 方法体,完整代码如下
function prodCycleTransformPayload(rawData) {
var obj = JSON.parse(rawData);
//修改jsonObj即可
var jsonObj = {data: obj};
var result = JSON.stringify(jsonObj);
return result;
}
- 综上,修改 var jsonObj = {data: obj}; 所在行,转换为对应设备 TOPIC 消息体
getProdCycleTopicSuffix 函数脚本编写方法如下:
- 指定流转的 Topic 后缀即可
var suffix = "/info/get";
- 完整代码如下:
function getProdCycleTopicSuffix(){
var suffix = "/info/get";
return suffix;
}
# 4.标识符
代码中常量、变量和其他自定义字段,需使用标识符定义。标识符支持大小写英文字母、数字和下划线(_),不能以数字开头。
以下关键词和保留字不能作为标识符使用。
- 关键词:
for、break、continue、if、else、true、false、var、new、null和return。 - 保留字:
breakdo、instanceof、typeof、case、catch、finally、void、switch、while、debugger、function、this、with、default、throw、delete、in、try、as、from、classenum、extends、super、const、export、import、await、implementslet、let、private、public、interface、package、protected、static、yield。
# 5.数据类型
代码中常量、变量和其他自定义字段支持数据类型有:Number、Boolean、String、Byte、Map、Array。
常量可取值为 null,数值型常量的取值类型包括十进制整型、十六进制整型和浮点型。
流程控制语句
物联网平台支持使用 for 循环和 if...else 条件语句。其中 for 循环,支持使用关键词 break(跳出循环)和 continue(跳出本次循环)。
# 6.操作符
- 逻辑运算:
&&、||。
逻辑条件结果为非布尔型时,null(空值)表示 false,否则为 true。例如null && "x"返回 false,null || "x"返回 true。 - 数学运算:
*、/、%、+、-。
操作数据必须为数值型,否则会抛出异常。 - 条件判断:
>、=>、<、<=、==(仅支持值比较)、!=。