簡體   English   中英

使用 jq,如何從 JSON 數據中的嵌套 arrays 中准確獲取嵌套值?

[英]Using jq, how can I get nested values from within nested arrays from JSON data accurately?

我有一個看起來像這樣的 JSON 文件:

{
    "people": {
        "names": [{
                "last_name": "Smith",
                "first_names": [{
                        "name": "Bill"
                    },
                    {
                        "name": "Alice"
                    },
                    {
                        "name": "Mary"
                    }
                ]
            },
            {
                "last_name": "Brown",
                "first_names": [{
                        "name": "Gil"
                    },
                    {
                        "name": "Bob"
                    },
                    {
                        "name": "Mary"
                    }
                ]
            },
            {
                "last_name": "Sanchez",
                "first_names": [{
                        "name": "Gil"
                    },
                    {
                        "name": "Jose"
                    },
                    {
                        "name": "Marlena"
                    }
                ]
            }
        ]
    }
}

我正在尋找的 output 是:

Smith, Bill
Smith, Alice
Smith, Mary
Brown, Gil
Brown, Bob
Brown, Mary
Sanchez, Gil
Sanchez, Jose
Sanchez, Marlena

我創建了一個如下所示的 jq 查詢:

jq -r '.people | "\(.names[].last_name), \(.names[].first_names[].name)"' nameFile.json | sort

但我得到的 output 是:

Brown, Alice
Brown, Bill
Brown, Bob
Brown, Gil
Brown, Gil
Brown, Jose
Brown, Marlena
Brown, Mary
Brown, Mary
Sanchez, Alice
Sanchez, Bill
Sanchez, Bob
Sanchez, Gil
Sanchez, Gil
Sanchez, Jose
Sanchez, Marlena
Sanchez, Mary
Sanchez, Mary
Smith, Alice
Smith, Bill
Smith, Bob
Smith, Gil
Smith, Gil
Smith, Jose
Smith, Marlena
Smith, Mary
Smith, Mary

顯然這是不正確的,我可以看出原因:第二個表達式忠實地遍歷了 names 數組中的每個匹配項。 但我看不出如何解決這個問題。

要獲得您想要的結果,您必須在迭代.names的循環之外迭代.first_names

.people
| .names[]
| "\(.last_name), \(.first_names[].name)"

暫無
暫無

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

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