本文主要介绍JSON、XML和Gzip函数的语法规则,包括参数解释、函数示例等。

函数列表

类型 函数 说明
JSON json_select 根据JMES语法提取或计算JSON表达式中特定的值。
json_parse 将值解析为JSON对象。
XML xml_to_json 将xml转成JSON再做展开操作。
Gzip gzip_compress 压缩数据,返回一个数据压缩后再进行base64编码的数据对象。
gzip_decompress 对数据进行base64解码后,再对数据解压缩,返回一个包含解压数据的对象。

json_select

根据JMES语法提取或计算JSON表达式中特定的值。

  • 函数格式
    json_select(value, jmes, default=None, restrict=False)
  • 参数说明
    参数 类型 是否必填 说明
    value 任意 传入待提取字段的JSON表达式或字段。
    jmes String JMES表达式,表示提取的字段。
    default 任意 如果提取字段不存在,则返回此处设置的值。默认为None。
    restrict Bool 提取字段的值不是合法的JSON格式时,是否严格限制加工。 默认值False。
    • False:忽略报错,数据加工继续处理,返回default定义的值。
    • True:直接报错,数据加工不再继续处理,直接丢弃该条日志。
  • 返回结果

    返回提取到的值。

  • 函数示例
    • 示例1:从content提取name的值。
      • 原始日志
        content:  {"name": "xiaoming", "age": 10}
      • 加工规则
        e_set("json_filter",json_select(v("content"), "name"))
      • 加工结果
        content:  {"name": "xiaoming", "age": 10}
        json_filter:  xiaoming
    • 示例2:从content提取name字段包含的所有值。
      • 原始日志
        content:  {"name": ["xiaoming", "xiaowang", "xiaoli"], "age": 10}
      • 加工规则
        e_set("json_filter",json_select(v("content"), "name[*]"))
      • 加工结果
        content:  {"name": ["xiaoming", "xiaowang", "xiaoli"], "age": 10}
        json_filter:  ["xiaoming", "xiaowang", "xiaoli"]
    • 示例3:从content提取name3的值,若字段不存在,则返回None值。
      • 原始日志
        content:  {"name": "xiaoming", "age": 10}
      • 加工规则
        e_set("json_filter",json_select(v("content"), "name3", default="None"))
      • 加工结果
        content:  {"name": "xiaoming", "age": 10}
        json_filter: None

json_parse

将值解析为JSON对象。

  • 函数格式
    json_parse(value, default=None, restrict=False)
  • 参数说明
    参数 类型 是否必填 说明
    value String 传入需要被解析的字段。
    default 任意 如果提取字段不存在,则返回此处设置的默认值。默认为None。
    restrict Bool 提取字段的值不是合法的JSON格式时,是否严格限制加工。 默认值False。
    • False:忽略报错,数据加工继续处理,返回default定义的值。
    • True:直接报错,数据加工不再继续处理,直接丢弃该条日志。
  • 返回结果

    返回转换后的JSON对象。

  • 函数示例
    • 原始日志
      content:  {"abc": 123, "xyz": "test" }
    • 加工规则
      e_set("json",json_parse(v("content")))
    • 加工结果
      content:  {"abc": 123, "xyz": "test" }
      json:  {"abc": 123, "xyz": "test"}

xml_to_json

将xml转成JSON再做展开操作。

  • 函数格式
    xml_to_json(source)
  • 参数说明
    参数 类型 是否必填 说明
    source String 传入需要被转换的字段。
  • 返回结果

    返回转换后的JSON数据。

  • 函数示例
    • 原始日志
      str : <data><country name="Liechtenstein"><rank>1</rank><year>2008</year><gdppc>141100</gdppc><neighbor name="Austria" direction="E"/><neighbor name="Switzerland" direction="W"/></country><country name="Singapore"><rank>4</rank><year>2011</year><gdppc>59900</gdppc><neighbor name="Malaysia" direction="N"/></country><country name="Panama"><rank>68</rank><year>2011</year><gdppc>13600</gdppc><neighbor name="Costa Rica" direction="W"/><neighbor name="Colombia" direction="E"/></country></data>
    • 加工规则
      e_set("str_json",xml_to_json(v("str")))
    • 加工结果
      str:<data><country name="Liechtenstein"><rank>1</rank><year>2008</year><gdppc>141100</gdppc><neighbor name="Austria" direction="E"/><neighbor name="Switzerland" direction="W"/></country><country name="Singapore"><rank>4</rank><year>2011</year><gdppc>59900</gdppc><neighbor name="Malaysia" direction="N"/></country><country name="Panama"><rank>68</rank><year>2011</year><gdppc>13600</gdppc><neighbor name="Costa Rica" direction="W"/><neighbor name="Colombia" direction="E"/></country></data>str_json:{"data": {"country": [{"@name": "Liechtenstein", "rank": "1", "year": "2008", "gdppc": "141100", "neighbor": [{"@name": "Austria", "@direction": "E"}, {"@name": "Switzerland", "@direction": "W"}]}, {"@name": "Singapore", "rank": "4", "year": "2011", "gdppc": "59900", "neighbor": {"@name": "Malaysia", "@direction": "N"}}, {"@name": "Panama", "rank": "68", "year": "2011", "gdppc": "13600", "neighbor": [{"@name": "Costa Rica", "@direction": "W"}, {"@name": "Colombia", "@direction": "E"}]}]}}

gzip_compress

压缩数据,返回一个数据压缩后再进行base64编码的数据对象。

  • 函数格式
    gzip_compress(data, compresslevel=6, to_format="base64", encoding="utf-8")
  • 参数说明
    参数 类型 是否必填 说明
    data 任意 输入需要压缩的数据。
    compresslevel Int 用于控制压缩等级,可配置为0~9的整数。默认值为6。
    • 1:压缩速度最快但压缩比例最小。
    • 9:压缩速度最慢但压缩比例最大。
    • 0:不压缩。
    to_format String 经过压缩后的数据进行base64编码,目前只支持进行base64编码。
    encoding String 编码格式,默认为utf-8,其他编码格式请参见标准编码格式
  • 返回结果

    返回压缩数据的base64编码后的对象。

  • 函数示例
    • 原始日志
      content: I always look forward to my holidays whether I travel or stay at home.
    • 加工规则
      e_set("base64_encode_gzip_compress",gzip_compress(v("content"),to_format="base64"))
    • 加工结果
      content: I always look forward to my holidays whether I travel or stay at home.
      base64_encode_gzip_compress: H4sIAA8JXl4C/xXK0QmAMAwFwFXeBO7RMQKNREx5kAZDtle/7wbES3rDyRsnoyQmklgNo1/ztzJN08BAhjzqYGCnNCS/tPR4AcgrnWVGAAAA

gzip_decompress

对数据进行base64解码后,再对数据解压缩,返回一个包含解压数据的对象。

  • 函数格式
    gzip_decompress(data, from_format="base64", encoding="utf-8")
  • 参数说明
    参数 类型 是否必填 说明
    data 任意 输入需要解压的数据。
    from_format String 输入已进行base64解码的数据,目前只支持base64解码后的数据。
    encoding String 编码格式,默认utf-8,其他编码格式请参见标准编码格式
  • 返回结果

    返回数据解压后的对象。

  • 函数示例
    • 原始日志
      content: H4sIAA8JXl4C/xXK0QmAMAwFwFXeBO7RMQKNREx5kAZDtle/7wbES3rDyRsnoyQmklgNo1/ztzJN08BAhjzqYGCnNCS/tPR4AcgrnWVGAAAA
    • 加工规则
      e_set("gzip_decompress",gzip_decompress(v("content"),from_fmat="base64"))
    • 加工结果
      content: H4sIAA8JXl4C/xXK0QmAMAwFwFXeBO7RMQKNREx5kAZDtle/7wbES3rDyRsnoyQmklgNo1/ztzJN08BAhjzqYGCnNCS/tPR4AcgrnWVGAAAA
      gzip_decompress: I always look forward to my holidays whether I travel or stay at home.