首页 > 解决方案 > JSON解析[`jq`]:获取祖父母兄弟姐妹的值

问题描述

例子

{
  "gp_sibling": "desired_value",
  "grand-parent": {
    "parent": [
      {
        "key": "known_value",
        "sibling": "asdf"
      }
    ]
  }
}

问题定义

我有一个很大的 JSON。我知道它key具有独特的价值。我需要得到它的祖父母的兄弟键值(键的值gp_sibling)。

现在,我可以grep使用 JSON,但我想使用jq. 但我不知道如何实现这一点(我jq仅用于简单查询)。

笔记

虽然我知道它jq也可以在 Windows 上使用,但我只在 Linux 上使用它。

发布更新

  1. 从示例中删除了逗号。一些格式修复。

标签: jsonjqtree-traversal

解决方案


如果您只想获取元素gb_sibling,可以使用以下内容:

jq .gp_sibling <file>

如果您只想在存在key具有其值的元素时获取它,则可以尝试以下操作:

jq 'select(."grand-parent"?.parent?[]?.key=="known_value")|.gp_sibling' <file>

key这样,它会过滤内部属性内容parent等于grand-parent的元素known_value

从那个结果中,gp_sibling被选中。

[注意]

grand-parent被引用是因为破折号否则会导致问题。


推荐阅读