В вашем JSON отсутствует запятая между двумя последними {objects}
в вашем [array]
.Я был бы очень удивлен, узнав, что cURL выводит неверный json, но я покажу вам, как использовать jq
для извлечения значений из этой структуры данных:
Примечание: jq
будет работать независимо от того, будет ли структураявляется компактным (ваш пример) или довольно напечатанным (ниже)
{
"rows": [
{
"description": "Persistence: Maximum wait time (milliseconds)",
"name": "maxWaitTime",
"value": 10000
},
{
"description": "Persistence: Maximum number of items",
"name": "sizeThreshold",
"value": 1000
},
{
"description": "DB: Number of threads",
"name": "numberOfThreads",
"value": 10
}
]
}
Мы хотим отфильтровать все объекты в массиве rows
, поэтому мы сначала обрежем массив по имени, а затем извлечем «значение»по ключу:
$ jq '.rows[].value' file
10000
1000
10
Теперь вы можете перебирать эти результаты в цикле while, но разумным шагом будет использование mapfile
Bash 4 и подстановка процесса <()
для создания массива Bash:
$ mapfile -t Array < <(jq '.rows[].value' file)
$ declare -p Array
declare -a Array=([0]="10000" [1]="1000" [2]="10")