Как обрабатывать JSON в командной строке
LinuxПри отладке REST API для работы с json в командной строке необходимо найти удобный инструмент, с помощью которого можно выполнять запросы и получить ответы. Важно, чтобы с помощью этого инструмента ответ было удобно сразу разбить, выделяя в нем нужные поля и объекты.
Отвечая на вопрос, как обрабатывать JSON в командной строке, рассмотрим утилиту с названием jq, которая идеально подходит для наших целей.
Одна позволяет без особых усилий выполнять следующее действия при обработке json-данных:
- разбирать;
- преобразовывать;
- фильтровать;
- сравнивать.
Для установки её на Linix можно скачать и установить одну из версий бинариков — 32 или 64 битную. Подробней о том, как обрабатывать JSON в командной строке, а также заказать создание сайта можно у специалистов компании Nomax.
$ wget http://stedolan.github.io/jq/download/linux32/jq (32-bit)
$ wget http://stedolan.github.io/jq/download/linux64/jq (64-bit)
$ chmod +x ./jq
$ sudo cp jq /usr/bin
Также существуют сборки для Mac OS X и Windows. Тем, кого интересует полный исходный код, нужно обратиться к лицензии MIT.
Как это работает, можно подробно рассмотреть на примерах. Возьмем следующую json-схему.
$ cat json.txt
{
"name": "Google",
"location":
{
"street": "1600 Amphitheatre Parkway",
"city": "Mountain View",
"state": "California",
"country": "US"
},
"employees":
[
{
"name": "Michael",
"division": "Engineering"
},
{
"name": "Laura",
"division": "HR"
},
{
"name": "Elise",
"division": "Marketing"
}
]
}
Мы получаем следующее простое поле:
$ cat json.txt | jq '.name'
"Google"
Более сложный вариант со вложенностью:
$ cat json.txt | jq '.location.city'
"Mountain View"
Вариант для массивов:
$ cat json.txt | jq '.employees[0].name'
"Michael"
Для конкретного списка полей выборка будет выглядеть так:
$ cat json.txt | jq '.location | {street, city}'
{
"city": "Mountain View",
"street": "1600 Amphitheatre Parkway"
}
Отсюда понятно, что используя утилиту под названием jq обработать JSON в командной строке на самом деле несложно. Если вам нужно помощь, обращайтесь к нашим программистам.