

ここからidに当たる7721291801を `jq` コマンドで取得したいです。

[code]

    {
        "total_count": 1,
            "entries": [
            {
                "type": "group",
                "id": "7721291801",
                "name": "test-group1",
                "group_type": "managed_group"
            }
            ],
            "limit": 100,
            "offset": 0
    }
    
[/code]

以下のコマンドを実行するとエラーとなります。

**実行したコマンド:**

[code]

    curl -i -X GET "https://api.box.com/2.0/groups" -H "Authorization: Bearer xxxxxxxxxx" | jq -R 'fromjson?' | jq '.[].id'
    
[/code]

**エラーメッセージ:**

[code]

    jq: error (at <stdin>:13): Cannot index number with string "id"
    
[/code]

IDの値を抽出する方法を教えていただきたいです。


CC BY-SA 4.0
2021-06-04T01:55:13.043
77320
2021-06-12T00:15:01.050
2021-06-04T01:59:40.617
3060
46654
question
json jq
jq コマンドで特定の文字列を抽出したい


`entries`以下を取り出したい場合はコメントにあるように`jq '.entries[]|.id'`となると思います。  
不定な階層の子要素からidをすべて取り出したい場合は`jq '..|.id?|select(.!=null)'`で探し出せそうです。

参考: [jqでJSONの深い階層を気にせずにアクセスする](https://www.greptips.com/posts/1309/)


CC BY-SA 4.0
2021-06-04T04:24:30.893
77329
2021-06-04T04:24:30.893
9820
77320
answer


ファイルを標準入力から渡して動作確認してみました。  
` | jq ..` 以降を見ていただければ。

[code]

    cat <<EOF | jq -r '.entries[].id'
    {
      "total_count": 1,
      "entries": [
        {
          "type": "group",
          "id": "7721291801",
          "name": "test-group1",
          "group_type": "managed_group"
        }
      ],
      "limit": 100,
      "offset": 0
    }
    EOF
    
[/code]

`-r` オプションを付けて置くと良いです。


CC BY-SA 4.0
2021-06-12T00:15:01.050
77498
2021-06-12T00:15:01.050
34583
77320
answer