簡體   English   中英

使用jq獲取特定的鍵值對

[英]Get specific key value pairs with jq

在下面的示例json中,我可以使用jq -M ' map(select(.charge == null)) '過濾費用為null的記錄

  [
    {
      "id": 1,
      "name": "vehicleA",
      "state": "available",
      "charge": 100
    },
    {
      "id": 2,
      "name": "vehicleB",
      "state": "available",
    },
    {
      "id": 3,
      "name": "vehicleB",
      "state": "available",
      "charge": 50
    }
  ]

返回:

{
  "id": 2,
  "name": "vehicleB",
  "state": "available",
}

一個人如何僅獲取id和與過濾后的記錄的id相關聯的值,以便將該步驟添加到上述查詢中將返回2

您的問題並不完全正確:

  • JSON示例無效,因為第二個對象的最后一個屬性帶有尾隨逗號,這將引發解析錯誤
  • map(select(.charge == null))的輸出不是示例中的對象,而是單個對象的數組

無論如何,您都可以像這樣從map的結果中提取.id

jq -M 'map(select(.charge == null)) | .[].id' file.json

如果您想要不收費的商品ID數組,則可以使用以下過濾器:

.items | map(select(.charge == null) | .id)

在jqplay.org上在線嘗試

如果希望枚舉值而不是將其收集到數組中,則更好:

.items[] | select(.charge == null) | .id

在jqplay.org上在線嘗試

暫無
暫無

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

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