- How do I open a JSON file in Linux?
- What is JQ in Linux?
- Is JQ installed by default?
- What can Windows do that Linux can t?
- Работа с JSON в bash с помощью jq
- Почему бы просто не использовать node.js, когда вам нужно работать с JSON?
- Установка jq
- Основы работы с jq
- Получить свойство
- Итерация
- Функции jq
- Создание объектов
- Давайте теперь используем его по-настоящему
- Похожие записи:
- Формат файла JSON — описание, как открыть?
- Чем открыть файл в формате JSON
- Программы для открытия JSON
- Конвертация JSON в другие форматы
- Почему именно JSON и в чем его достоинства?
How do I open a JSON file in Linux?
Vim is a file opener software that can be used to open the JSON file on Linux platform. GitHub Atom is a cross-platform tool to open JSON files….Below is a list of tools that can open a JSON file on the Windows platform:
- Notepad.
- Notepad++
- Microsoft Notepad.
- Microsoft WordPad.
- Mozilla Firefox.
- File Viewer Plus.
- Altova XMLSpy.
What is JQ in Linux?
jq is a lightweight and flexible command-line JSON processor. If you are a command line addict, you will like the official description. jq is like sed for JSON data – you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text.
Is JQ installed by default?
By default, the jq binary installed with the package is used. If you have special needs or want to use another binary in a different path you can set the environment variable JQ_PATH to override the default behaviour.
Does Linux die?
Linux isn’t dying anytime soon, programmers are the main consumers of Linux. It will never be as big as Windows but it will never die either. Linux on desktop never really worked because most computers don’t come with Linux preinstalled, and most people will never bother installing another OS.
Why Linux is not popular as Windows?
The main reason why Linux is not popular on the desktop is that it doesn’t have “the one” OS for the desktop as does Microsoft with its Windows and Apple with its macOS. If Linux had only one operating system, then the scenario would be totally different today. Linux kernel has some 27.8 million lines of code.
What can Windows do that Linux can t?
What Can Linux Do that Windows Can’t?
- Linux will never harass you relentlessly to update.
- Linux is feature-rich without the bloat.
- Linux can run on almost any hardware.
- Linux changed the world — for the better.
- Linux operates on most supercomputers.
- To be fair to Microsoft, Linux can’t do everything.
Работа с JSON в bash с помощью jq
jq — это мощный инструмент, позволяющий читать, фильтровать и писать JSON в bash.
Возможно, вы видели или даже писали bash, который выглядит следующим образом:
curl -s 'https://some-random-api.ml/others/joke' \ | python -m json.tool \ | grep '\"joke\"' \ | cut -d ':' -f 2 \ | sed 's/"/\"/g'
Это трудно читать и еще труднее писать. Чтобы добраться до свойства в теле ответа JSON, вам приходится обращаться к 4 различным утилитам! Bash не понимает JSON из коробки, и использование типичных инструментов для работы с текстом, таких как grep, sed или awk, становится затруднительным. К счастью, есть лучший способ с помощью инструмента под названием jq.
jq может упростить приведенный выше bash до следующего:
curl -s "https://some-random-api.ml/others/joke" | jq '.joke'
Это гораздо приятнее . Упрощая работу с JSON в bash, jq открывает множество возможностей автоматизации, для которых в противном случае мне пришлось бы писать что-то на node.js (что не так уж плохо, просто обычно это занимает больше времени).
Почему бы просто не использовать node.js, когда вам нужно работать с JSON?
Иногда node.js является правильным инструментом. Для большинства задач автоматизации я предпочитаю использовать bash, когда это возможно, потому что он быстрее и даже более портативен (я могу поделиться сценарием bash с членами команды, у которых не установлен node.js). На мой взгляд, bash более выразителен и лаконичен для определенных задач, чем node.
Установка jq
jq не является встроенной командой ни в одну среду, поэтому вам придется установить его. Запустите brew install jq на macOS. О том, как установить jq в других средах, читайте на странице справки по установке.
Основы работы с jq
jq работает аналогично sed или awk — как фильтр, в который вы передаете данные и из которого извлекаете значения. Также как sed или awk, он, по сути, имеет свой собственный специфический язык (DSL) для запросов JSON. К счастью, он очень интуитивно понятен (в отличие от awk)
Получить свойство
Допустим, у нас есть JSON, который выглядит следующим образом:
Чтобы вывести свойство foo, мы используем оператор ., за которым следует имя свойства.
Это выведет 123, как и ожидалось.
Это работает и с вложенностью. Так .a.b.c.d будет перемещаться вниз по свойствам вложенных объектов.
Это само по себе довольно полезно. Для реалистичного и абсолютно полезного примера давайте напишем сценарий, который получает астрономическую картинку дня и устанавливает ее в качестве обоев (это только для macOS).
# получите URL-адрес текущей астрономической картинки дня (APOD) apod_url=$(curl -s https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY | jq -r '.hdurl') # получить только имя изображения из URL filepath=$(basename "$apod_url") # Теперь получите изображение и сохраните его curl -s -o "$filepath" "$apod_url" # Используйте AppleScript, чтобы установить его в качестве обоев osascript -e "tell application \"Finder\" to set desktop picture to POSIX file \"$PWD/$filepath\""
Обратите внимание, что если в свойстве есть пробелы или странные символы, вам придется использовать кавычки. Например:
echo '< "Version Number": "1.2.3" >' | jq '. "Version Number"'
Кроме того, убедитесь, что вы всегда оборачиваете селектор jq в одинарные кавычки, иначе bash попытается интерпретировать все символы как ., тогда как мы хотим, чтобы это делал jq.
Итерация
Теперь давайте посмотрим, как работает итерация. Оператор итератора массива или значения объекта, .[], делает это возможным.
Это выведет 1, 2, 3 на отдельных строках.
В массиве объектов вы можете получить доступ к свойству каждого элемента массива следующим образом:
Или для объекта, .[] выведет значение каждой пары ключ/значение:
Обратите внимание, что вы также можете передать индекс в .[], поэтому
Теперь как нам сделать что-то для каждой строки? Точно так же, как в bash вы обрабатываете все, что выводит несколько строк информации: xargs, циклы for, или некоторые команды, просто обрабатывающие несколько элементов ввода, и т.д. Например:
Функции jq
В jq также есть встроенные «функции». Возвращаясь к предыдущему примеру итерации объекта — допустим, мы хотим получить ключи объекта (не значения) в виде массива:
что вернет a b . Обратите внимание, что мы также используем оператор pipe |, который работает в jq так же, как и в bash — он принимает вывод слева и передает его в качестве ввода справа.
Еще одна удобная функция для массивов и объектов — это функция length, которая возвращает свойство длины массива или количество свойств объекта.
Можно поступить еще более причудливо и создавать промежуточные массивы и объекты на лету. Здесь я объединяю ключи объектов dependencies и devDependencies (из файла package.json) в массив, сглаживаю его, а затем получаю длину.
jq -r '[(.dependencies, .devDependencies) | keys] | flatten | length' package.json
Это возвращает количество зависимостей и devDependencies, которые содержит package.json.
Создание объектов
Вы также можете создавать объекты «на лету». Это может быть полезно для изменения формы некоторых JSON. Например:
Давайте теперь используем его по-настоящему
Что если я захочу провести аудит зависимостей в package.json и удалить все, что не используется? Неиспользуемые зависимости замедляют установку npm для всех и просто мешают. Я мог бы вручную проверить использование каждой зависимости (через grep или в IDE), но если у вас много зависимостей, это быстро надоедает, поэтому давайте автоматизируем это.
set -e # функция для поиска зависимостей grep_dep() < # параметры: $1 = строка для поиска, $2 = каталог для поиска в # [1] grep --include="*.js" --exclude-dir="node_modules" -R --color -n "require\(.*$1.*\)" "$2" # если grep возвращает 0 результатов, то код выхода равен 1. Отсутствие результатов означает, что зависимость не используется if [[ $? >0 ]]; then echo echo "** Использование $1 не найдено, рассмотрите возможность удаления. **" echo fi > # [2] export -f grep_dep # [3] jq -r '.dependencies | keys | .[]' package.json | \ # [4] xargs -I '<>' -P 4 -t bash -c "grep_dep '<>' ."
[1] Вот как работают флаги grep:
- -include и -exclude-dir сужают круг файлов, которые будут искаться.
- -R означает рекурсивный, указывает на поиск всех совпадающих файлов
- -color окрашивает вывод
- -n отображает номера строк
[2] Я должен экспортировать его, чтобы подпрограмма могла его увидеть. Если вы хотите, чтобы xargs вызывал пользовательскую функцию, вам придется вызывать ее в подпрограмме по некоторым причинам.
[3] -r означает «raw-output», то есть без кавычек вокруг значений, что делает его пригодным для обработки в других командах bash. Мы получаем имена зависимостей в виде массива (это эквивалентно Object.keys(require(‘./package.json’).dependencies) в node.js)
[4] Затем мы передаем их в xargs, который обрабатывает настройку grep для каждой строки. Вот как работают все флаги xargs:
- -t указывает, что нужно передать эхом построенную команду; полезно для отладки
- -I <> определяет строку замены, куда будет помещена строка зависимости
- -P 4 определяет параллельность, так что будет выполняться 4 одновременные команды greps
мы говорим ему запустить подпрограмму bash, в которой будет вызвана наша функция grep_dep с ее аргументами.
В этом скрипте можно сделать еще много чего интересного, чтобы сделать его более надежным, но это основная суть.
jq — это потрясающий инструмент, который упрощает работу с JSON в bash. DSL для фильтрации, запросов и создания JSON намного глубже, чем то, что я описал здесь, так что смотрите https://stedolan.github.io/jq/manual/.
Похожие записи:
Формат файла JSON — описание, как открыть?
Файл формата JSON открывается специальными программами. Чтобы открыть данный формат, скачайте одну из предложенных программ.
Чем открыть файл в формате JSON
Основное предназначение формата JSON (полн. JavaScript Object Notation File) – это использование в различных языках программирования, включая Java и ему аналогичные.
Файл JSON представляет собой набор структурированных текстовых данных в форме парных окончаний “ключ — значение”. Запись таких пар подчиняется определенным правилам, диктуемым программным кодом того или иного языка.
Аналог расширения JSON – формат XML, однако по своему структурному содержанию JSON является более компактным.
JSON не является популярным в широком кругу пользователей. Основные пользователи данного формата – программисты веб-приложений.
С практической точки зрения, основное назначение файлов *.JSON – хранение резервных копий баз данных веб-браузера (например, Яндекс или Firefox). Все файлы с данным расширением располагаются в каталоге bookmarkbackups.
Не зная всех нюансов программного кода языка программирования, на котором написан JSON файл, категорически не рекомендуется вносить какие-либо изменения в него. Это может привести к некорректному функционированию веб-браузера или полному отказу его работы.
Программы для открытия JSON
Файл JSON представляет собой набор структурированных текстовых данных, поэтому открыть его можно с использованием любого текстового редактора, например, Notepad, PSPad editor или даже Блокнот (встроенное приложение).
Для детального просмотра и редактирования формата JSON в рамках ОС Windows рекомендуется использовать специализированные утилиты и веб-браузеры (Altova XMLSpy, Mozilla Firefox и.т.д).
Примечательно, что расширение JSON адаптировано для работы на платформе ОС Mac и Linux.
Чтобы открыть формат JSON в данных ОС обычно применяют:
- Bare Bones TextWrangler (ОС Mac);
- MacVim (ОС Mac);
- Apple TextEdit (ОС Mac);
- GNU Emacs (ОС Linux);
- Vim (ОС Linux);
- Pico (ОС Linux).
Важно понимать, что редактирование формата JSON допустимо только профессиональным пользователям, владеющим всеми тонкостями того или иного языка программирования.
Конвертация JSON в другие форматы
Структурные элементы, типы данных, объекты и модули каждого отдельно взятого языка программирования носят уникальный характер. В этой связи, трансляция/конвертация данных формата JSON в другие расширения не представляется возможным.
Почему именно JSON и в чем его достоинства?
Файл с расширением JSON не столь популярен в широком кругу пользователей. Основные его потребители – компании, занимающиеся разработкой веб-приложений и различного рода программного обеспечения.
Формат интерактивных данных, предназначенный для представления простых структур данных и объектов. Сохраняется в легковесном, основанном на тексте, удобочитаемом формате. Изначально основывается на подмножестве JavaScript, но считается форматом, независимым от языка.
Файлы JSON часто используются в программировании веб-приложений Ajax. Также могут использоваться другими приложениями в качестве альтернативы файлам .XML.
ПРИМЕЧАНИЕ: Mozilla Firefox сохраняет резервные копии закладок при помощи файлов JSON. Файлы сохраняются в директории пользовательского профиля в папке под названием bookmarkbackups. Вы можете вручную создать резервную копию закладок Firefox и импортировать их в различные копии Firefox. Для импорта откройте Библиотеку закладок, нажмите на клавишу import/export в верхней строке, Restore → Choose File. и выберите свой файл резервной копии JSON.
Чем открыть файл в формате JSON (JavaScript Object Notation File)