首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据字符串键检索json值

如何根据字符串键检索json值
EN

Stack Overflow用户
提问于 2022-03-12 17:39:57
回答 1查看 762关注 0票数 0

我有这样的json数据:

代码语言:javascript
复制
{
    "deploy:success": 2,
    "deploy:RTX:success": 1,
    "deploy:BLX:success": 1,
    "deploy:RTX:BigTop:success": 1,
    "deploy:BLX:BigTop:success": 1,
    "deploy:RTX:BigTop:xxx:success": 1,
    "deploy:BLX:BigTop:yyy:success": 1,
}

每增加一个新的:<field>,就会使它更加具体。例如,使用"deploy:RTX:success“格式的键是特定站点的RTX。我正计划使用一个过滤器只显示站点特定的计数。

代码语言:javascript
复制
eval column_name=if($site_token$ = "", "deploy:success", "deploy:$site_token$:success")

然后重命名派生列:

代码语言:javascript
复制
rename column_name deploy

但是重命名是在第一个参数中寻找实际值,而不仅仅是列名。我不知道如何从那一栏中得到与我一生相关联的值。

代码语言:javascript
复制
index=cloud_aws namespace=my namespace=Stats protov3=* 
| spath input=protov3 
| eval column_name=if("$site_token$" = "", "deploy:success", "deploy:$site_token$:success") 
| rename column_name AS "deploy"

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-12 21:18:36

目前还不清楚最终的结果是什么。如果$site_token$为空时的结果应该是"deploy:success“,那么只需使用"deploy”作为eval的目标。

代码语言:javascript
复制
index=cloud_aws namespace=my namespace=Stats protov3=* 
| spath input=protov3 
| eval deploy=if("$site_token$" = "", "deploy:success", "deploy:$site_token$:success")

OTOH,如果$site_token$为空时的结果应该是"2“,那么在eval中使用带有单引号的现有查询。单引号告诉Splunk将包含的文本视为字段名,而不是文字字符串(双引号就是这样做的)。

代码语言:javascript
复制
index=cloud_aws namespace=my namespace=Stats protov3=* 
| spath input=protov3 
| eval deploy=if("$site_token$" = "", 'deploy:success', 'deploy:$site_token$:success')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71451935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档