您可以在编写解析器脚本时使用以下函数,实现多样化数据处理。函数列表包括数据类型转换函数、流转数据到数据目的函数和基础数据类型的函数等。本文介绍函数的表达式及其使用说明。

数据类型转换函数

表达式 说明
toBoolean(Object) Object值转换为Boolean值。参数支持以下类型的取值:
  • Boolean:返回对应的布尔值。
  • Number:参数为0,返回false。否则,返回true。
  • String:参数为"true",返回true。否则,返回false。
  • 参数值为null:返回false。
toNumber(Object) Object值转换为Number值。参数支持以下类型的取值:
  • Boolean:参数为true,返回1,参数为false,返回0。
  • Number:返回对应的数值。
  • String:按照数值类型解析。
  • 参数值为null:返回0。
toString(Object) Object值转换为String值。

参数为任意值,返回对应String值。参数值为null,返回空字符。

当参数为二进制类型时,按照UTF-8编码返回对应值。

toMap(Object) Object值转换为Map值。参数支持以下类型的取值:
  • Map:返回对应的值。
  • String:按照JSON格式解析为Map。
  • 参数值为null:返回空Map。
toArray(Object) Object值转换为Array值。参数支持以下类型的取值:
  • Array:返回对应的值。
  • String:按照JSON格式解析为Array。
  • 参数值为null:返回空Array。
toBinary(Object) Object值转换为二进制值。参数支持以下类型的取值:
  • Binary:返回对应的值。
  • String:按照UTF-8编码返回值。
  • 参数值为null:返回空Binary。

流转数据到数据目的函数

以下函数表达式中的入参destinationId是数据目的ID,payload是消息内容。

函数表达式 说明
writeAmqp(destinationId, payload, tag) 流转数据到AMQP消费组。

tag:可选参数。设置tag后,所有通过该操作流转到AMQP服务端订阅消费组里的消息都会携带该tag

tag长度不超过128个字符,可以输入常量或变量。
  • 常量支持输入中文汉字、英文字母、数字。
  • 变量代表解析脚本处理后的JSON数据中key对应的value值。如果取不到value值,则消息不携带tag。
writeFc(destinationId, data) 流转数据到函数计算(FC)。

data:流转到FC的数据。

writeKafka(destinationId, payload, key) 流转数据到消息对列Kafka。

key:可选参数,流转到Kafka Topic消息中携带的key。

您可以在Kafka消息消费端,通过标签进行消息路由。

writeMns(destinationId, payload) 流转数据到消息服务(MNS)。
writeTableStore(destinationId, data) 流转数据到表格存储(Tablestore)。

data:写入表格存储的数据。仅支持Map类型数据,其中键(Key)值对应表格列名,值(Value)对应列值。

data中必须包含Tablestore的主键。

writeRds(destinationId, data) 流转数据到云数据库RDS。

data:写入云数据库表的数据。仅支持Map类型数据,其中键(Key)值对应数据库表列名,值(Value)对应列值。

writeIotTopic(destinationId, topic, payload) 流转数据到另一个Topic。

Topic:数据转发目的地Topic,其中ProductKey必须与destinationId对应数据目的中设置的产品相同。更多信息,请参见创建数据目的

基本数据类型支持的函数

  • Map类型
    表达式 说明
    [Object] 获取指定键(Key)对应的Value
    size() 获取Map数据中键值对数量。
    containKey(String) 判断Map数据中是否包含指定的键。
    keySet() 获取Map数据中键的集合,返回类型为Array。
    remove(Object) 移除Map数据中指定键对应的键值对。
    put(Object, Object) 在Map数据中添加键值对。
    putAll(map) 在Map数据中批量添加一组Map数据。
  • Array类型。
    函数 说明
    [int] 获取指定索引位置的值。数组首位的索引值为0。
    contains(Object) 判断数组中是否包含指定元素。
    remove(Object) 移除数组中指定的元素。
    removeAt(int) 移除数组中指定索引位置的元素。
    add(Object) 在数组末尾中添加元素。
    add(index, Object) 在对应index索引位置添加元素。
    addAll(array) 在数组中添加另一个数组。
    size() 获取数组中元素个数。
  • String类型。
    函数 说明
    substring(start, end) 截取从start位置到end-1位置的字符串。end不传时,截取到字符串末尾。
    length() 获取字符串长度。
    split(String) 按照分割字符,分割字符串。
    startWith(String) 查看字符串是否以指定的字符串开头。
    endWith(String) 查看字符串是否以指定的子字符串结尾。
    indexOf(String, index) 从指定index索引位置开始,指定字符串在字符串中首次出现的位置。

    index不传入,默认为0。

其他函数

表达式 说明
endWith(input, suffix) 判断字符串input中是否以字符串suffix结尾。

返回结果类型为布尔型。

getDeviceTag(key) 返回key所对应的设备标签。如果设备没有该key对应的标签,则返回值为空。

云产品流转旧版中支持的函数,新版的解析器脚本中同样支持。详细内容,请参见数据流转支持的函数