提取JSON中特定重复键的所有值

提取JSON中特定重复键的所有值,json,parsing,nested,key,jq,Json,Parsing,Nested,Key,Jq,我有一个大约4500行的巨大json文件。 我希望提取所有名为“value”的键的值。 json路径的级别不同 JSON示例: { k1:v1, k2:v2, k3:v3, k4:{ k5:v5, k6:{ k7:v7, value:"value1" } } k8:v8, value:"value2" } 有多个这样的“值”标记 有没有一种方法可以使用jq获得所有的值?使用 下面是一个稍短的变体,它使用可选的对

我有一个大约4500行的巨大json文件。 我希望提取所有名为“value”的键的值。 json路径的级别不同

JSON示例:

{
k1:v1,
k2:v2,
k3:v3,
k4:{
     k5:v5,
     k6:{
          k7:v7,
          value:"value1"
        }
   }
k8:v8,
value:"value2"
}

有多个这样的“值”标记

有没有一种方法可以使用jq获得所有的值?

使用


下面是一个稍短的变体,它使用可选的对象标识符和可选操作符以及递归下降

。|。价值?//空的
示例输出(使用更正的JSON示例)

请注意,如果“value”键可能为空,则此快捷方式将不会产生相同的输出,因为当“value”键丢失时,
/
无法区分
null
的“value”和
null
运算符生成的
null
。这是一个问题,然后使用
has
测试“value”键是否存在更好

.. | objects | if has("value") then .value else empty end
"value2"
"value1"