次のコマンドが有効です。
$ echo '{ "a": [ { "b": "1" }, { "b": "2" } ] }' | jq -r '.a[0].b'
1
b
ただし、以下のすべての要素の値を取得しようとすると、a
次のエラーが発生します。
$ echo '{ "a": [ { "b": "1" }, { "b": "2" } ] }' | jq -r '.a[*].b'
jq: error: syntax error, unexpected '*' (Unix shell quoting issues?) at <top-level>, line 1:
.a[*].b
jq: 1 compile error
ワイルドカードをどのように避けるべきですか?私はいくつかのバリエーションを試しましたが、成功しませんでした。
ワイルドカードを配列インデックスとして使用することは、次の有効なオプションです。https://support.smartbear.com/alertsite/docs/monitors/api/endpoint/jsonpath.html#:~:text=JSONPath%20is%20a%20query%20言語,%20requires%20 to%20be%20 確認。
答え1
配列イテレータにアスタリスク文字は必要jq
あり.[]
ません。次のコマンドは、予想される出力を提供します。
echo '{ "a": [ { "b": "1" }, { "b": "2" } ] }' | jq -r '.a[].b'
結果:
1
2
追加リファレンス:jqマニュアル
構文が異なる理由には、jq
クエリ用の独自の構文を持つツールがあります。 JSONPath標準に基づいていません。