更新时间:2024-11-01 GMT+08:00
分享

特定结构化数据函数

本文介绍特定结构化数据函数的语法规则,包括参数解释、函数示例等。

类型

函数

说明

JSON

json_select

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

json_parse

将值解析为JSON对象。

XML

xml_to_json

将xml数据转成JSON数据。

json_select

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

  • 函数格式
    json_select(value, jmes, default=None, restrict=false)
  • 参数说明

    参数

    类型

    是否必填

    说明

    value

    String、JSON

    传入待提取字段的JSON表达式或字段。

    jmes

    String

    JMES表达式,表示提取的字段。

    default

    String

    如果提取字段不存在,则返回此处设置的值。默认为None,表示不返回字段。

    restrict

    Bool

    提取字段的值不是合法的JSON格式时,是否严格限制加工。 默认值false。

    • false:忽略报错,数据加工继续处理,返回default定义的值。
    • true:直接报错,数据加工不再继续处理,直接丢弃该条日志。
  • 返回结果

    返回提取到的值。

  • 函数示例
    1. 示例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. 示例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. 示例3:从content字段提取元素name3的值,若字段不存在,则返回default的值。
      • 测试数据
        {
          "content":  {"name": "xiaoming", "age": 10}
        }
      • 加工规则
        e_set("json_filter", json_select(v("content"), "name3", default="None"))
      • 加工结果
        content:  {"name": "xiaoming", "age": 10}
        json_filter: None
    4. 示例4:从content字段提取携带短划线(-)的元素name-test的值。
      • 测试数据
        {
          "content":  {"name": {"name-test":"xiaoming"}, "age": 10}
        }
      • 加工规则
        e_set("json_filter", json_select(v("content"), 'name."name-test"', default=None))
      • 加工结果
        content:  {"name": {"name-test":"xiaoming"}, "age": 10}
        json_filter: xiaoming
    5. 示例5:从content字段提取携带短划线(-)的元素name-test的值,若元素不存在,则不返回字段。
      • 测试数据
        {
          "content":  {"name": {"name.test":"xiaoming"}, "age": 10}
        }
      • 加工规则
        e_set("json_filter", json_select(v("content"), 'name."name-test"', default=None))
      • 加工结果
        content:  {"name": {"name-test":"xiaoming"}, "age": 10}

json_parse

将值解析为JSON对象。

  • 函数格式
    json_parse(value, default=None, restrict=false)
  • 参数说明

    参数

    类型

    是否必填

    说明

    value

    String

    传入需要被解析的字段。

    default

    String

    如果解析字段不存在,则返回此处设置的值。默认为None,表示不返回字段。

    restrict

    Bool

    解析字段的值不是合法的JSON格式时,是否严格限制加工。 默认值false。

    • false:忽略报错,数据加工继续处理,返回default定义的值。
    • true:直接报错,数据加工不再继续处理,直接丢弃该条日志。
  • 返回结果

    返回转换后的JSON对象。

  • 函数示例
    1. 示例1:提取content字段的JSON值。
      • 测试数据
        {
          "content":  {"abc": 123, "xyz": "test" }
        }
      • 加工规则
        e_set("json", json_parse(v("content")))
      • 加工结果
        content:  {"abc": 123, "xyz": "test" }
        json:  {"abc": 123, "xyz": "test"}
    2. 示例2:提取content字段的值,如果不是JSON格式,则返回default的值。
      • 测试数据
        {
          "content": "this is not json"
        }
      • 加工规则
        e_set("json", json_parse(v("content"), default="FFF", restrict=false))
      • 加工结果
        content: this is not json
        json: FFF

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"}]}]}}

相关文档