簡體   English   中英

提取 JSON 中特定重復鍵的所有值

[英]Extract all the values for a specific repeated key in JSON

我有一個大約 4500 行的巨大 json 文件。 我希望提取名為“value”的所有鍵的值。 json 路徑的級別不一樣。

JSON 示例:

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

有多個這樣的“值”標簽。

有沒有辦法使用 jq 來獲取所有值?

使用遞歸下降

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

這是使用可選對象標識符.foooguz ismail 答案的一個稍短的變體 和替代運算符//以及遞歸下降。

.. | .value? // empty

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

"value2"
"value1"

注意,該快捷方式不會產生相同的輸出,如果“值”鍵可以是null作為//不能在區分null “值”和一個null由所產生的? 缺少“值”鍵時的運算符。 這是一個問題,然后用has測試“值”鍵的has會更好。

在線試試吧!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM