如何根据字符串键检索 json 值
How to retrieve a json value based on a string key
我有 json 如下所示的数据:
{
"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。我正计划使用过滤器来仅显示特定站点的计数。
eval column_name=if($site_token$ = "", "deploy:success", "deploy:$site_token$:success")
然后重命名派生列:
rename column_name deploy
但重命名是在第一个参数中寻找实际值,而不仅仅是列名。我一辈子都不知道如何从该列中获取关联的值。
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"
我做错了什么?
目前还不清楚最终结果应该是什么。如果 $site_token$ 为空时的结果应该是 "deploy:success" 那么只需使用 "deploy" 作为 eval
.
的目标
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 将封闭的文本视为字段名称而不是文字字符串(这是双引号的作用)。
index=cloud_aws namespace=my namespace=Stats protov3=*
| spath input=protov3
| eval deploy=if("$site_token$" = "", 'deploy:success', 'deploy:$site_token$:success')
我有 json 如下所示的数据:
{
"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。我正计划使用过滤器来仅显示特定站点的计数。
eval column_name=if($site_token$ = "", "deploy:success", "deploy:$site_token$:success")
然后重命名派生列:
rename column_name deploy
但重命名是在第一个参数中寻找实际值,而不仅仅是列名。我一辈子都不知道如何从该列中获取关联的值。
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"
我做错了什么?
目前还不清楚最终结果应该是什么。如果 $site_token$ 为空时的结果应该是 "deploy:success" 那么只需使用 "deploy" 作为 eval
.
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 将封闭的文本视为字段名称而不是文字字符串(这是双引号的作用)。
index=cloud_aws namespace=my namespace=Stats protov3=*
| spath input=protov3
| eval deploy=if("$site_token$" = "", 'deploy:success', 'deploy:$site_token$:success')