json - 根据子键值获取键名
问题描述
我正在尝试设置一些监控。作为其中的一部分,我需要解析一些粗糙的 json 输出来检索节点 ID,每次重新启动节点或重新启动服务时,该节点 ID 都会发生变化。我总是知道节点名称,但不知道"id"。JSON 看起来像这样:
{
"cluster_name":"cluster1",
"nodes":
{
"generatednodeid1":{"name":"node01"},
"generatednodeid2":{"name":"node2"}
}
}
正如我所期望的那样,这样做.nodes | keys
给了我["generatednodeid1","generatednodeid2"] 。
我试过.nodes[] | select(.name=="node2")
但只输出{"name":"node2"}
我真正需要发生的是,如果.name=="node2"
它给了我generatenodeid2
我一直在用头撞墙。我一生都无法弄清楚我错过了什么。这看起来很简单(可能是而且我已经看了太久了)。有任何想法吗?
解决方案
有任何想法吗?
在这种情况下,“to_entries”系列过滤器很有帮助,例如:
.nodes
| to_entries[]
| select(.value.name == "node2")
| .key
推荐阅读
- python - 调用具有随机参数的函数列表
- python - 从当前 Python 代码运行另一个 Python 脚本
- xamarin - 等待结果时的 Mvvmcross MvxNavigationService 问题
- javascript - Woocommerce 默认排序不起作用
- html - 块充当内联块?
- python - 按最后 2 位数字对数字列表进行排序
- node.js - 即使 req.session.passport.user 拥有一切,为什么 req.IsAuthenticated() 返回 false
- android - 如何获取android webViewClient的原始HTML响应
- javascript - 带有咖啡和 jquery 的 Rails 5
- string - 使用 AppleScript 在终端中写入字符串