能否在Splunk中使用eval创建字典/JSON类对象?代码可行性咨询
关于Splunk中创建字典类型字段的写法验证
这种直接用{"value":"True","time":_time}格式定义字典类型字段的写法,在Splunk SPL里是不被原生支持的。
Splunk的字段默认只支持字符串、数字、布尔这类基础数据类型,没有内置的字典(键值对结构)类型。你写的这条eval语句执行后,publishedToIntegrator字段会变成一个JSON格式的字符串,而不是能直接进行键值操作的字典对象。
如果需要实现类似需求,可以参考两种方案:
保留字符串形式的JSON,后续用
spath命令解析字段
修正后的语句(注意转义引号):| eval publishedToIntegrator=if(raw!="", "{\"value\":\"True\",\"time\":"._time."}", "{\"value\":\"False\",\"time\":null}") | spath input=publishedToIntegrator output=pt_value path=value | spath input=publishedToIntegrator output=pt_time path=time这样就能从JSON字符串里提取出
pt_value和pt_time两个单独字段进行后续操作。直接创建多个独立字段(更符合Splunk的使用习惯)
不需要用字典结构,分开定义字段更直观:| eval published_value=if(raw!="", "True", "False"), published_time=if(raw!="", _time, null())
内容的提问来源于stack exchange,提问作者Kshitij Kohli
相关产品推荐
相关产品推荐

