簡體   English   中英

使用jq提取內部數組匹配值

[英]Extract inner array matching values using jq

我的json如下所示:

[
[
    {
        "id": "abcd"
    },
    {
        "address": [
            "140 Deco st"
        ]
    }
],
[
    {
        "id": "xyz"
    },
    {
        "dummy": "This is dummy"
    }
],
[
    {
        "id": "12356"
    },
    {
        "address": [
            "140 Deco st"
        ]
    }
]]

現在,我只想捕獲具有虛擬值“ This is dummy”的那些id。 某些數據可能具有也可能沒有虛擬和地址字段。

我在下面嘗試過,但是給了我錯誤“ ...無法檢查其收容條件”

jq -c '.[] | .[] | select(.dummy | contains("This is dummy")) | .[] | .id'

任何幫助深表感謝!

正確使用contains非常棘手。 由於要求是:

僅捕獲那些具有虛擬值“ This is dummy”的ID

我會建議:

.[]
| select( any(.[]; .dummy == "This is dummy") )
| add
| .id

或(取決於您的詳細要求):

.[]
| select( any(.[]; .dummy == "This is dummy") )
| .[]
| .id? // empty

暫無
暫無

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

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