全部產品
Search
文件中心

Simple Log Service:特定結構化資料函數

更新時間:Jul 27, 2024

本文介紹JSON和XML結構化資料函數的文法規則,包括參數解釋、函數樣本等。

函數列表

類型

函數

說明

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:從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的值,若欄位不存在,則返回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:從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:從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:提取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:提取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"}]}]}}