【问题标题】:Extract all the values for a specific repeated key in JSON提取 JSON 中特定重复键的所有值
【发布时间】:2020-04-01 06:24:28
【问题描述】:

我有一个大约 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 parsing nested key jq


    【解决方案1】:

    使用recursive descent

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

    【讨论】:

      【解决方案2】:

      这是oguz ismail's answer 的一个稍短的变体,它使用可选对象标识符.foo? 和替代运算符// 以及递归下降。

      .. | .value? // empty
      

      示例输出(使用更正的 JSON 示例)

      "value2"
      "value1"
      

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

      Try it online!

      【讨论】:

        猜你喜欢
        • 2021-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        相关资源
        最近更新 更多