Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] BASH - парсинг JSON

Ответить
Настройки темы
Любой язык - [решено] BASH - парсинг JSON

Старожил


Сообщения: 415
Благодарности: 20

Профиль | Отправить PM | Цитировать


Всем привет!

С помощью 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

Начал гуглить и столкнулся с тем, что не смог найти примеры парсинга массива. Есть много примеров парсинга отдельной строки, но в данном случае это не подходит. Если у кого есть примеры, поделитесь пожалуйста.

Отправлено: 21:30, 14-03-2022

 

Старожил


Сообщения: 415
Благодарности: 20

Профиль | Отправить PM | Цитировать


Нашел решение. Нужно использовать JQ. В итоге после API запроса добавить обращение к первому элементу в массиве:
MY_API_REQUEST | jq '.resources[0]'

Кстати, при получении элемента массива он возвращается с кавычками. Можно их убрать вот такой конструкцией
MY_API_REQUEST | jq '.resources[0]' | sed -e "s/^.\{,1\}//;s/.\{,1\}$//"


С помощью sed убираем первый и последний символ строки.

Отправлено: 22:13, 14-03-2022 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 250
Благодарности: 51

Профиль | Отправить PM | Цитировать


читатйте хелп jq у его есть полезные флаги чтобы убрать кавычки из выдачи
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:19, 15-03-2022 | #3


Старожил


Сообщения: 415
Благодарности: 20

Профиль | Отправить PM | Цитировать


Действительно есть такое. Оказывается можно использовать -r для обрезания кавычек

MY_API_REQUEST | jq -r '.resources[0]'


Теперь появилась еще одна задача - нужно определить последний элемент в массиве. Кто может подсказать, как это сделать?
Наверное нужно посчитать количество элементов в массиве и потом обращаться к последнему. Но как это сделать, не пойму никак.

Отправлено: 22:19, 15-03-2022 | #4


Старожил


Сообщения: 250
Благодарности: 51

Профиль | Отправить PM | Цитировать


прочитать документацию помогает ....

Код: Выделить весь код
cat a.js  | jq '.'
Код: Выделить весь код
{
  "x": [
    "a",
    "b",
    "c",
    "d"
  ]
}
Код: Выделить весь код
cat a.js  | jq  -cr '.x[-1]'
Код: Выделить весь код
d
кстати для мета программирования

Код: Выделить весь код
'.resources[-1]'
и
Код: Выделить весь код
'.resources|.[-1]'
раносильны
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:28, 16-03-2022 | #5


Старожил


Сообщения: 415
Благодарности: 20

Профиль | Отправить PM | Цитировать


Цитата Serguei Kouzmine:
'.resources[-1]' »
Спасибо. Да, позиция "-1" это последний элемент в массиве.

Отправлено: 07:48, 18-03-2022 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] BASH - парсинг JSON

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Нужна помощь с парсингом JSON Apock Программирование и базы данных 3 28-03-2019 11:35
PowerShell - Запрос json методом POST LaFleur Скриптовые языки администрирования Windows 2 20-09-2018 20:05
2010 - json to эксель Elizavetta Microsoft Office (Word, Excel, Outlook и т.д.) 3 20-07-2017 01:13
Любой язык - JSON: settings.json в Visual Studio Code прокси jkadaba Скриптовые языки администрирования Windows 0 14-04-2017 08:10
Java - Spring(Jackson) переопределить парсинг JSON Killer_13 Программирование и базы данных 0 07-02-2012 21:38




 
Переход