Acessando arrays jq com atributo bash

0

É possível acessar o array json com atributos bash?

Exemplo de JSON:

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

Exemplo de Bash, algo assim:

count=0
id=$(cat example.json | jq -r '.data[$count].id')
    
por erwin 21.05.2018 / 09:16

2 respostas

3

Simplesmente com a opção --argjson , que considerará $cnt variable como o valor JSON :

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

A saída:

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

--argjson name JSON-text:

This option passes a JSON-encoded value to the jq program as a predefined variable. If you run jq with --argjson foo 123, then $foo is available in the program and has the value 123

    
por 21.05.2018 / 09:28
1

Use aspas duplas em vez de simples para permitir a interpolação de variáveis:

jq -r ".data[$count].id" example.json
    
por 21.05.2018 / 09:20

Tags