1. ホーム
  2. json

[解決済み】jq: 文字列で配列のインデックスを作成できない

2022-02-11 09:59:22

質問

あるファイル("myfile"と呼ぶことにします)に次のようなものがあります。

[{
    "id": 123,
    "name": "John",
    "aux": [{
        "abc": "random",
        "def": "I want this"
    }],
    "blah": 23.11
}]

がなくてもパースできます。 [] を以下のように設定します。

$ cat myfile | jq -r '.aux[] | .def'
I want this
$

しかし [] 得ることができます。

$ cat myfile | jq -r '.aux[] | .def'
jq: error: Cannot index array with string

をどのように扱えばよいのでしょうか? [] jqの正しい使い方を学びたいのです。

どのように解決するのですか?

そのはずです。

jq '.[].aux[].def' file.json

.[] は外側の配列に対して反復処理を行います。 .aux[] を繰り返し、その後に aux の配列は、すべてのノードと .def は、それらの .def プロパティを指定します。

これが出力されます。

"I want this"

二重引用符を削除したい場合は、次のようにします。 -r ( --raw ) から jq :

jq -r '.[].aux[].def' file.json

出力します。

I want this