Bashプロパティを使用してjq配列にアクセスする

Bashプロパティを使用してjq配列にアクセスする

bashプロパティを使用してjson配列にアクセスできますか?

JSONの例:

{
"data": [
    {
        "id": 1, 
        "name": "John"
    }, 
    {
        "id": 2, 
        "name": "Doe"
    },
    ...
}

Bashの例は次のとおりです。

count=0
id=$(cat example.json | jq -r '.data[$count].id')

答え1

変数をすでに存在するものとして扱う--argjsonオプションを使用します。$cntJSON- エンコードされた値:

$ cnt=0
$ jq --argjson cnt "$cnt" '.data[$cnt]' file.json

出力:

{
  "id": 1,
  "name": "John"
}

--argjson name JSON-text:

このオプションは、JSONでエンコードされた値を事前定義された変数としてjqプログラムに渡します。次のようにjqを実行する--argjson foo 123と、 $foo123

答え2

使用二重引用符変数の補間を許可するには、単一の代わりに:

jq -r ".data[$count].id" example.json

関連情報