...

понедельник, 11 июля 2016 г.

[Перевод] Как распарсить JSON-строку в коммандной строке Linux


Если вы часто работаете с текстами формата JSON из командной строки или в шелл-скриптах, вы можете задаться вопросом, есть ли какая-то консольная утилита, которая может распарсить JSON-строку. Консольный JSON-парсер может быть удобен, когда вы тестируете или отлаживаете сетевые JSON-сервисы. Вы можете скормить ответы формата JSON от веб-сервиса консольному JSON-парсеру, тем самым легко изучая трудночитаемые JSON-ответы или извлекая из них отдельные объекты.

В этом руководстве я покажу как распарсить JSON-строку из командной строки.

В Linux есть консольный JSON-процессор jq, который делает то, что нам необходимо. Используя jq, вы можете парсить, фильтровать, мапить и преобразовывать JSON-структуру данных без особых усилий.

Для установки jq на Linux, просто скачайте его бинарник (доступен отдельно для 32- и 64-битной систем) как показано далее.

$ wget http://ift.tt/29NqYcp # (32-битная система)
$ wget http://ift.tt/1zu4bYq # (64-битная система)
$ chmod +x ./jq
$ sudo mv jq /usr/local/bin


Бинарник jq также доступен для Windows, OS X и Solaris платформ, а его полный исходный код выпущен под лицензией MIT.

Также вы можете установить jq из репозитория вашего дистрибутива Linux.

Для Debian и Ubuntu:

$ sudo apt-get install jq


Для Fedora:
$ sudo dnf install jq


Для openSUSE:
$ sudo zypper install jq


Следующие примеры показывают как парсить JSON-структуру данных с помощью jq.

Пример 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"
                        }
                ]
}


Чтобы распарсить JSON-объект:
$ cat json.txt | jq '.name'


"Google"


Чтобы распарсить вложенный JSON-объект:
$ cat json.txt | jq '.location.city'


"Mountain View"


Чтобы распарсить JSON-массив:
$ cat json.txt | jq '.employees[0].name'


"Michael"


Чтобы извлечь конкретные поля из JSON-объекта:
$ cat json.txt | jq '.location | {street, city}'


{
  "city": "Mountain View",
  "street": "1600 Amphitheatre Parkway"
}

Комментарии (0)

    This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
    Recommended article from FiveFilters.org: Most Labour MPs in the UK Are Revolting.

    Комментариев нет:

    Отправить комментарий