根据子键值获取键名

时间:2020-06-02 22:48:36

标签: json key jq

我正在尝试设置一些监视。作为其中的一部分,我需要解析一些粗糙的json输出以检索节点ID,节点ID每次重新启动或服务重新启动时都会更改。我总是知道节点名称,但不知道“ id” 。 JSON看起来像这样:

data.output <-read_table2("user.id  problem.id  first.correct   cwa_prob    prob.seq    post.cwa.correct
540995  PRABNBZQ    0   1   problem.id.problem.1    NA
540995  PRABNBZ2    1   0   problem.id.problem.2    1
540995  PRABNBZK    0   1   problem.id.problem.3    NA
540995  PRABNB2B    0   1   problem.id.problem.4    0
540995  PRABNBWE    0   1   problem.id.problem.5    0
565662  PRABNB2B    1   0   problem.id.problem.1    1
565662  PRABNBZQ    1   1   problem.id.problem.2    NA
565662  PRABNBZ9    1   0   problem.id.problem.3    1
565662  PRABNBZV    1   0   problem.id.problem.4    NA
565662  PRABNBWG    1   0   problem.id.problem.5    NA
")

{ "cluster_name":"cluster1", "nodes": { "generatednodeid1":{"name":"node01"}, "generatednodeid2":{"name":"node2"} } } 给了我 [“ generatednodeid1”,“ generatednodeid2”]

我尝试过.nodes | keys,但只输出 {“ name”:“ node2”}

我真正需要做的是,如果.nodes[] | select(.name=="node2")给了我 generatenodeid2

我一直在撞墙。我无法为自己的生活弄清楚我的缺失。这似乎很简单(可能是,而且我已经看了太久了)。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

有什么想法吗?

在这种情况下,“ to_entries”系列过滤器会很有帮助,例如:

.nodes
| to_entries[]
| select(.value.name == "node2")
| .key