特定結(jié)構(gòu)化數(shù)據(jù)函數(shù)
本文介紹JSON和XML結(jié)構(gòu)化數(shù)據(jù)函數(shù)的語法規(guī)則,包括參數(shù)解釋、函數(shù)示例等。
函數(shù)列表
類型 | 函數(shù) | 說明 |
JSON | 根據(jù)JMES語法提取或計(jì)算JSON表達(dá)式中特定的值。 | |
將值解析為JSON對(duì)象。 | ||
XML | 將xml數(shù)據(jù)轉(zhuǎn)成JSON數(shù)據(jù)。 |
json_select
根據(jù)JMES語法提取或計(jì)算JSON表達(dá)式中特定的值。
函數(shù)格式
json_select(value, jmes, default=None, restrict=False)
參數(shù)說明
參數(shù)
類型
是否必填
說明
value
String、JSON
是
傳入待提取字段的JSON表達(dá)式或字段。
jmes
String
是
JMES表達(dá)式,表示提取的字段。
default
String
否
如果提取字段不存在,則返回此處設(shè)置的值。默認(rèn)為None,表示不返回字段。
restrict
Bool
否
提取字段的值不是合法的JSON格式時(shí),是否嚴(yán)格限制加工。 默認(rèn)值False。
False:忽略報(bào)錯(cuò),數(shù)據(jù)加工繼續(xù)處理,返回default定義的值。
True:直接報(bào)錯(cuò),數(shù)據(jù)加工不再繼續(xù)處理,直接丟棄該條日志。
返回結(jié)果
返回提取到的值。
函數(shù)示例
示例1:從content字段提取元素name的值。
原始日志
content: {"name": "xiaoming", "age": 10}
加工規(guī)則
e_set("json_filter",json_select(v("content"), "name"))
加工結(jié)果
content: {"name": "xiaoming", "age": 10} json_filter: xiaoming
示例2:從content字段提取元素name包含的所有值。
原始日志
content: {"name": ["xiaoming", "xiaowang", "xiaoli"], "age": 10}
加工規(guī)則
e_set("json_filter", json_select(v("content"), "name[*]"))
加工結(jié)果
content: {"name": ["xiaoming", "xiaowang", "xiaoli"], "age": 10} json_filter: ["xiaoming", "xiaowang", "xiaoli"]
示例3:從content字段提取元素name3的值,若字段不存在,則返回default的值。
原始日志
content: {"name": "xiaoming", "age": 10}
加工規(guī)則
e_set("json_filter", json_select(v("content"), "name3", default="None"))
加工結(jié)果
content: {"name": "xiaoming", "age": 10} json_filter: None
示例4:從content字段提取攜帶短劃線(-)的元素name-test的值。
原始日志
content: {"name": {"name-test":"xiaoming"}, "age": 10}
加工規(guī)則
e_set("json_filter", json_select(v("content"), 'name."name-test"', default=None))
加工結(jié)果
content: {"name": {"name-test":"xiaoming"}, "age": 10} json_filter: xiaoming
示例5:從content字段提取攜帶短劃線(-)的元素name-test的值,若元素不存在,則不返回字段。
原始日志
content: {"name": {"name.test":"xiaoming"}, "age": 10}
加工規(guī)則
e_set("json_filter", json_select(v("content"), 'name."name-test"', default=None))
加工結(jié)果
content: {"name": {"name-test":"xiaoming"}, "age": 10}
json_parse
將值解析為JSON對(duì)象。
函數(shù)格式
json_parse(value, default=None, restrict=False)
參數(shù)說明
參數(shù)
類型
是否必填
說明
value
String
是
傳入需要被解析的字段。
default
String
否
如果解析字段不存在,則返回此處設(shè)置的值。默認(rèn)為None,表示不返回字段。
restrict
Bool
否
解析字段的值不是合法的JSON格式時(shí),是否嚴(yán)格限制加工。 默認(rèn)值False。
False:忽略報(bào)錯(cuò),數(shù)據(jù)加工繼續(xù)處理,返回default定義的值。
True:直接報(bào)錯(cuò),數(shù)據(jù)加工不再繼續(xù)處理,直接丟棄該條日志。
返回結(jié)果
返回轉(zhuǎn)換后的JSON對(duì)象。
函數(shù)示例
示例1:提取content字段的JSON值。
原始日志
content: {"abc": 123, "xyz": "test" }
加工規(guī)則
e_set("json", json_parse(v("content")))
加工結(jié)果
content: {"abc": 123, "xyz": "test" } json: {"abc": 123, "xyz": "test"}
示例2:提取content字段的值,如果不是JSON格式,則返回default的值。
原始日志
content: this is not json
加工規(guī)則
e_set("json", json_parse(v("content"), default="FFF", restrict=False))
加工結(jié)果
content: this is not json json: FFF
xml_to_json
將xml數(shù)據(jù)轉(zhuǎn)成JSON數(shù)據(jù)。
函數(shù)格式
xml_to_json(source)
參數(shù)說明
參數(shù)
類型
是否必填
說明
source
String
是
傳入需要被轉(zhuǎn)換的字段。
返回結(jié)果
返回轉(zhuǎn)換后的JSON數(shù)據(jù)。
函數(shù)示例
原始日志
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>
加工規(guī)則
e_set("str_json",xml_to_json(v("str")))
加工結(jié)果
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"}]}]}}