![]() |
BASH - парсинг JSON
Всем привет!
С помощью bash скрипта обращаюсь к API и получают ответ в формате JSON Ответ в формате JSON
{
"meta": { "query_time": 0.162813486, "pagination": { "offset": 0, "limit": 100, "total": 11 }, "powered_by": "reports", "trace_id": "b51df724-6ed1-4636-822e-4cce18d934c9" }, "resources": [ "008a7304b0d642878ebc9c8067d5eaa5", "07ec9c1e34c8446c82d299d294d4f2c6", "1e63584b95304437a82639543ce9cdda", "69ad97b63b574136be8b543f69f162cd", "e31275236df543388ab3f58f5ed1fd5e", "f6f9dc925c7342d5b7bfb6ed218b3a71", "fd6e963230354e34b21bc9ada60b13dd", "aedaba4be84b48a3be585a5f24ea911f", "5aa135b264e648e29aa440c7e02c1d0b", "efc44841194b40809f9427ca5d466cd2", "50d410420e064b908144204045a68336" ], "errors": [] } В таком ответе в resources может быть разное количество ID-шников (от 1 до 31). Надо с помощью bash распрасить так, чтобы всегда получать первый ID в этом ответе. То есть получить 008a7304b0d642878ebc9c8067d5eaa5 Начал гуглить и столкнулся с тем, что не смог найти примеры парсинга массива. Есть много примеров парсинга отдельной строки, но в данном случае это не подходит. Если у кого есть примеры, поделитесь пожалуйста. |
Нашел решение. Нужно использовать JQ. В итоге после API запроса добавить обращение к первому элементу в массиве:
MY_API_REQUEST | jq '.resources[0]' Кстати, при получении элемента массива он возвращается с кавычками. Можно их убрать вот такой конструкцией MY_API_REQUEST | jq '.resources[0]' | sed -e "s/^.\{,1\}//;s/.\{,1\}$//" С помощью sed убираем первый и последний символ строки. |
читатйте хелп jq у его есть полезные флаги чтобы убрать кавычки из выдачи
|
Действительно есть такое. Оказывается можно использовать -r для обрезания кавычек
MY_API_REQUEST | jq -r '.resources[0]' Теперь появилась еще одна задача - нужно определить последний элемент в массиве. Кто может подсказать, как это сделать? Наверное нужно посчитать количество элементов в массиве и потом обращаться к последнему. Но как это сделать, не пойму никак. |
прочитать документацию помогает ....
Код:
cat a.js | jq '.' Код:
{ Код:
cat a.js | jq -cr '.x[-1]' Код:
d Код:
'.resources[-1]' Код:
'.resources|.[-1]' |
Цитата:
|
Время: 18:16. |
Время: 18:16.
© OSzone.net 2001-