Я хочу, чтобы GET
некоторые данные json с сервера. Я делаю это, используя:Получение значения JSON от cURL в Linux Bash
UPDATE=$(curl -i -H "Accept: application/json" -H "Content-Type: application/json" --cookie "${COOKIE_NAME}" "${1}/update/${DEVICE_NAME}");
До этого сервер аутентифицирован. ${1}
является доменом сервера, ${DEVICE_NAME}
- это имя устройства, запрашивающего обновление.
Это возвращает JSON следующим образом:
[{ "_id": "54ff35887d8ef574029b9166", "пользователь": "54fe4313883bcec2c0ac0d64", "__ v": 0, "создал": "2015-03- 10T18: 18: 48.023Z "," status ":" available "," pbo_udid ":" lemaker "," installation_script ":" "," description ":" Prints hello world to console "," package_name ":" helloworld_1.0-1.deb», "имя": "Hello World V1"}]
Я хочу прямо сейчас сделать 2 вещи:
- Убедитесь, что данные возвращаются (если обновление не доступно, сервер возвращает данные
[]
- Extract, например
package_name
Как сделать это в Баш скрипт Linux?
Вы, вероятно, нужно передать значение JSON в CLI для процессора сценария, который может десериализации строку JSON и извлекать данные, которые вы ищете для. (например, PERL, PHP и т. д.). Конечно, в этот момент я, вероятно, просто напишу всю логику для извлечения и извлечения данных на этом языке сценариев. Кроме того, вы, скорее всего, пытаетесь собрать какую-то неудобную комбинацию 'sed',' awk' и т. Д., Чтобы, по сути, построить десериализатор. –
Есть несколько действительно отличных инструментов для разбора JSON от bash; 'jq' является одним из них. –