Как создать файл json в линукс

Обновлено: 04.07.2024

Файл package.json - ключевой элемент во многих базах кода приложений, основанных на экосистеме Node.js.

Если вы работаете с JavaScript или когда-либо взаимодействовали с проектом JavaScript, Node.js или внешним интерфейсом, вы наверняка встречали package.json файл.

Что то, что для? Что вы должны знать об этом и какие интересные вещи вы можете с ним сделать?

В package.json файл является своего рода манифестом для вашего проекта. Он может делать многое, совершенно не связанное с этим. Например, это центральный репозиторий конфигурации для инструментов. Это также где npm и yarn сохранить имена и версии установленного пакета.

Файловая структура

Вот пример файла package.json:

Оно пустое! Нет фиксированных требований к тому, что должно быть в package.json файл для приложения. Единственное требование - соблюдение формата JSON, в противном случае он не может быть прочитан программами, которые пытаются программно получить доступ к его свойствам.

Если вы создаете пакет Node.js, который хотите распространять по npm все кардинально меняется, и у вас должен быть набор свойств, которые помогут другим людям его использовать. Позже мы увидим об этом больше.

Это еще один package.json:

Он определяет name свойство, которое сообщает имя приложения или пакета, который содержится в той же папке, где находится этот файл.

Вот гораздо более сложный пример, который я извлек из образца приложения Vue.js:

Существуютлотыо том, что здесь происходит:

  • name устанавливает имя приложения / пакета
  • version указывает текущую версию
  • description это краткое описание приложения / пакета
  • main установить точку входа для приложения
  • private если установлено на true предотвращает случайную публикацию приложения / пакета на npm
  • scripts определяет набор скриптов узла, которые вы можете запустить
  • dependencies устанавливает список npm пакеты, установленные как зависимости
  • devDependencies устанавливает список npm пакеты, установленные как зависимости разработки
  • engines устанавливает, на каких версиях Node работает этот пакет / приложение
  • browserslist используется, чтобы указать, какие браузеры (и их версии) вы хотите поддерживать

Все эти свойства используются либо npm или другие инструменты, которые мы можем использовать.

Разбивка свойств

В этом разделе подробно описаны свойства, которые вы можете использовать. Я имею в виду «пакет», но то же самое относится и к локальным приложениям, которые вы не используете в качестве пакетов.

Устанавливает имя пакета.

Имя должно быть меньше 214 символов, не должно содержать пробелов, оно может содержать только строчные буквы, дефисы ( - ) или подчеркивания ( _ ).

Это потому, что когда пакет публикуется на npm , он получает свой собственный URL на основе этого свойства.

Если вы опубликовали этот пакет публично на GitHub, хорошим значением для этого свойства будет имя репозитория GitHub.

author

Перечисляет имя автора пакета

Также может использоваться с этим форматом:

contributors

Помимо автора, у проекта может быть один или несколько участников. Это свойство представляет собой массив, в котором они перечислены.

Также может использоваться с этим форматом:

Ссылки на средство отслеживания проблем с пакетами, скорее всего, на страницу проблем с GitHub.

homepage

Устанавливает домашнюю страницу пакета

version

Указывает текущую версию пакета.

Это свойство соответствует нотации семантического управления версиями (semver) для версий, что означает, что версия всегда выражается тремя числами: x.x.x .

Первое число - это основная версия, вторая - второстепенная версия, а третья - версия исправления.

В этих числах есть смысл: выпуск, который только исправляет ошибки, является выпуском с исправлениями, выпуск, который вводит обратно совместимые изменения, является второстепенным выпуском, основной выпуск может иметь критические изменения.

license

Указывает лицензию пакета.

keywords

Это свойство содержит массив ключевых слов, связанных с тем, что делает ваш пакет.

description

Это свойство содержит краткое описание пакета

Это особенно полезно, если вы решили опубликовать свой пакет в npm чтобы люди могли узнать, о чем этот пакет.

repository

Это свойство указывает, где находится этот репозиторий пакетов.

Обратите внимание на github префикс. Есть и другие популярные сервисы:

Вы можете явно установить систему контроля версий:

Вы можете использовать разные системы контроля версий:

Устанавливает точку входа для пакета.

Когда вы импортируете этот пакет в приложение, именно здесь приложение будет искать экспорт модуля.

private

если установлено на true предотвращает случайную публикацию приложения / пакета на npm

scripts

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

Эти сценарии представляют собой приложения командной строки. Вы можете запустить их, позвонив npm run XXXX или же yarn XXXX , куда XXXX это имя команды. Пример: npm run dev .

Вы можете использовать любое имя для команды, а скрипты могут делать буквально все, что захотите.

dependencies

Устанавливает список npm пакеты устанавливаются как зависимости.

Когда вы устанавливаете пакет с помощью npm или yarn:

этот пакет автоматически добавляется в этот список.

devDependencies

Устанавливает список npm пакеты, установленные как зависимости разработки.

Они отличаются от dependencies потому что они предназначены для установки только на машине разработки, а не для запуска кода в производственной среде.

Когда вы устанавливаете пакет с помощью npm или yarn:

этот пакет автоматически добавляется в этот список.

engines

Устанавливает, с какими версиями Node.js и других команд работает этот пакет / приложение.

browserslist

Используется, чтобы указать, какие браузеры (и их версии) вы хотите поддерживать. На него ссылаются Babel, Autoprefixer и другие инструменты, чтобы добавить только полифилы и резервные варианты, необходимые для браузеров, на которые вы нацеливаетесь.

Свойства, зависящие от команды

В package.json файл также может содержать конфигурацию для конкретной команды, например для Babel, ESLint и других.

У каждого есть определенное свойство, например eslintConfig , babel и другие. Они зависят от команды, и вы можете найти, как их использовать, в документации по соответствующей команде / проекту.

Версии пакета

В приведенном выше описании вы видели такие номера версий:

3.0.0 или же ^0.13.0 . Что они означают и какие еще спецификаторы версии можно использовать?

Этот символ указывает, какие обновления принимает ваш пакет, исходя из этой зависимости.

Учитывая, что при использовании semver (семантическое управление версиями) все версии имеют 3 цифры, первая из которых является основным выпуском, вторая - второстепенным выпуском, а третья - выпуском патча, у вас есть следующие правила:

: если вы напишете

Есть и другие правила:

  • без символа: вы принимаете только ту конкретную версию, которую указали
  • latest : вы хотите использовать последнюю доступную версию

и вы можете комбинировать большинство из вышеперечисленных в диапазонах, например: 1.0.0 || >=1.1.0 <1.2.0 , чтобы использовать 1.0.0 или одну версию от 1.1.0 и выше, но ниже 1.2.0.

Is there a (Unix) shell script to format JSON in human-readable form?

Basically, I want it to transform the following:

. into something like this:

Be warned: python -m json.tool does not always produce valid JSON. (Hint: 1e1000)

58 Answers 58

With Python 2.6+ you can do:

or, if the JSON is in a file, you can do:

if the JSON is from an internet source such as an API, you can use

For convenience in all of these cases you can make an alias:

For even more convenience with a bit more typing to get it ready:

for all the above cases. You can put this in .bashrc and it will be available every time in shell. Invoke it like prettyjson_s '' .

Note that as @pnd pointed out in the comments below, in Python 3.5+ the JSON object is no longer sorted by default. To sort, add the --sort-keys flag to the end. I.e. . | python -m json.tool --sort-keys .

You could pipe that onto pygmentize -l javascript to get syntax colored output in your command line. Edit: If you have pygments installed that is. A great answer, only caution I have with it is it does sort the keys on output - which you might need to be aware of. This seems to escape Unicode characters into \uXXXX, which might be a disadvantage.

It's very simple to use and it works great! It can handle very large JSON structures, including streams. You can find their tutorials here.

Or use jq with identity filter:

There is also a --sort-keys option, which is helpful in some cases. "jq ." is great as a pretty-printer, but it comes with a caveat: jq (up to and including jq version 1.5) will alter the values of very large and very small numbers because it parses numeric values as IEEE 754 64-bit values. To check whether your favorite pretty-printer has the same issue, try this value: 1e1000. Note that python -mjson.tool fails this test badly in that it produces Infinity, which is not even JSON. @Meekohi the alternative is "unnecessary use of echo". Super happy to have found the <<< operator – exactly what I was looking for.

I use the "space" argument of JSON.stringify to pretty-print JSON in JavaScript.

From the Unix command-line with Node.js, specifying JSON on the command line:

From the Unix command-line with Node.js, specifying a filename that contains JSON, and using an indent of four spaces:

Downvoted. The OP is about a "*nix command-line script" and this answer is a different context. @danorton: JS can be used from the commandline via node.js and other similar solutions. It sucks that the script is different for a filename vs. stdin

I wrote a tool that has one of the best "smart whitespace" formatters available. It produces more readable and less verbose output than most of the other options here.

This is what "smart whitespace" looks like:


I may be a bit biased, but it's an awesome tool for printing and manipulating JSON data from the command-line. It's super-friendly to use and has extensive command-line help/documentation. It's a Swiss Army knife that I use for 1001 different small tasks that would be surprisingly annoying to do any other way.

Latest use-case: Chrome, Dev console, Network tab, export all as HAR file, "cat site.har | underscore select '.url' --outfmt text | grep mydomain"; now I have a chronologically ordered list of all URL fetches made during the loading of my company's site.

Pretty printing is easy:

Same thing, more explicit:

This tool is my current passion project, so if you have any feature requests, there is a good chance I'll address them.


Слово JSON означает JavaScript Object Notation, хотя оно начинается с JavaScript и в основном используется для обмена данными между сервером и браузером, но в настоящее время используется во многих областях, включая встроенные системы.

Здесь мы собираемся проанализировать и вывести JSON с помощью инструментов командной строки в Linux.

Это чрезвычайно полезно для обработки больших данных JSON в скриптах оболочки или для управления данными JSON в скриптах оболочки.

Что такое красивый вывод json?

Данные JSON структурированы так, чтобы быть более удобочитаемыми для человека.

Однако в большинстве случаев данные JSON хранятся в одной строке, даже без символа окончания строки.

Очевидно, что это не очень удобно для чтения и редактирования вручную.

Вот тогда красивый вывод полезен.

Название самоочевидно, переформатировать текст JSON, чтобы он было более читабельным для людей.

Данные JSON можно анализировать с помощью текстовых процессоров командной строки, таких как awk, sed и gerp.

Однако для этой цели есть несколько специализированных инструментов.

  • jq или jshon, JSON-парсер для оболочки, оба они весьма полезны.
  • Скрипты оболочки, такие как JSON.sh или jsonv.sh, для анализа JSON в оболочке bash, zsh или dash.
  • JSON.awk, JSON-анализатор, awk-скрипт.
  • Модули Python, такие как json.tool.
  • underscore-cli, Node.js и на основе JavaScript.

В этом уроке я сосредоточусь только на jq, довольно мощном парсере JSON для оболочек с расширенными возможностями фильтрации и скриптов.

JSON понятный вывод

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

Фактические данные выглядят так:

Теперь выведем его с помощью JQ:

Вывод должен выглядеть как показано ниже после фильтрации результата с помощью jq.

То же самое можно сделать с модулем Python json.tool. Вот пример:

Это решение на основе Python должно подойти большинству пользователей, но оно не очень полезно, если Python не установлен или не может быть установлен, как во встроенных системах.

Таким образом, вы можете использовать его без проблем в Windows, Linux или Mac OS.

Как парсить JSON с jq

Во-первых, вам нужно установить jq, он уже подхвачен большинством дистрибутивов GNU / Linux, и вы можете установить его с помощью соответствующих команд установщика пакетов.

На Debian, Ubuntu, Linux Mint:

Для других ОС или платформ смотрите официальные инструкции по установке.

Основные фильтры и идентификаторы jq

jq может читать данные JSON либо из стандартного ввода, либо из файла.

Вы должны использовать оба в зависимости от ситуации.

Единый символ это самый простой фильтр.

Эти фильтры также называются object identifier-index.

Чтобы отфильтровать определенную часть JSON, вы должны изучить иерархию данных файла JSON.

Пример данных JSON из Википедии:

Я собираюсь использовать эти данные JSON в качестве примера в этом учебном пособии, сохранив их как sample.json.

Допустим, я хочу отфильтровать адрес из файла sample.json. Таким образом, команда должна быть такой:

Снова допустим, что я хочу почтовый индекс, затем я добавлю еще один object identifier-index, то есть еще один фильтр.

Что такое JSON

За представление структурированных данных на основе синтаксиса JavaScript отвечает стандартный текстовый формат под названием JSON, аббревиатура которого расшифровывается как JavaScript Object Notation.

В этой статье поговорим о том, зачем нужен JSON, какими он обладает особенностями и в каком виде отображается в коде.

Что значит JSON

JSON – текстовый формат данных, используемый практически во всех скриптовых языках программирования, однако его истоки находятся у JavaScript. Он имеет сходство с буквенным синтаксисом данного языка программирования, но может использоваться отдельно от него. Многие среды разработки отлично справляются с его чтением и генерированием. JSON находится в состоянии строки, поэтому позволяет передавать информацию по сети. Он преобразуется в объект JS, чтобы пользователь мог прочитать эти данные. Осуществляется это методами языка программирования, но сам JSON методов не имеет, только свойства.

Вы можете сохранить текстовый файл JSON в собственном формате .json, и он будет отображаться как текстовый. Для MIME Type представление меняется на application/json.

Структура JSON

Схематический вид объекта JSON

При работе с рассматриваемым текстовым форматом необходимо учитывать правила создания его структуры в объекте, массиве и при присвоении значения. На следующей иллюстрации вы видите наглядную демонстрацию представления объекта.

Схематический вид массива при работе с JSON

Если речь идет о массиве, здесь тоже необходимо применять определенные правила, поскольку он всегда представляет собой упорядоченную совокупность данных и находится внутри скобок [ ]. При этом значения будут отделены друг от друга.

В массиве находятся упомянутые значения, которые могут быть представлены в виде простого текста, чисел, истины, лжи и т.д.

Представление объектов в масиве при использовании JSON

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

Основные преимущества JSON

Как уже понятно, JSON используется для обмена данными, которые являются структурированными и хранятся в файле или в строке кода. Числа, строки или любые другие объекты отображаются в виде текста, поэтому пользователь обеспечивает простое и надежное хранение информации. JSON обладает рядом преимуществ, которые и сделали его популярным:

Не занимает много места, является компактным в написании и быстро компилируется.

Создание текстового содержимого понятно человеку, просто в реализации, а чтение со стороны среды разработки не вызывает никаких проблем. Чтение может осуществляться и человеком, поскольку ничего сложного в представлении данных нет.

Структура преобразуется для чтения на любых языках программирования.

Практически все языки имеют соответствующие библиотеки или другие инструменты для чтения данных JSON.

Основной принцип работы JSON

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

Ниже приведена примерная структура обработки данных при обращении «клиент-сервер-клиент». Это актуально для передачи информации с сервера в браузер по запросу пользователя, что и является основным предназначением JSON.

Запрос на сервер отправляется по клику пользователя, например, когда он открывает элемент описания чего-либо для его детального прочтения.

Запрос генерируется при помощи AJAX с использованием JavaScript и программного сценарного файла PHP. Сам сценарий запущен на сервере, значит, поиск данных завершится успешно.

Программный файл PHP запоминает всю предоставленную с сервера информацию в виде строки кода.

JavaScript берет эту строку, восстанавливает ее до необходимого состояния и выводит информацию на странице пользователя в браузере.

На выполнение этой задачи понадобится меньше секунды, и главную роль здесь выполняет встроенный в браузер JavaScript. Если же он по каким-то причинам не функционирует или отсутствует, действие произведено не будет.

Как открыть JSON на компьютере

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

Можете использовать практически любой текстовый редактор. Самый простой вариант – встроенный в операционную систему Блокнот. По умолчанию JSON отображается как файл, для которого не выбрана программа для открытия, поэтому при попытке его запуска понадобится выбрать Блокнот.

Открытие файла формата JSON через Блокнот

Известный текстовый редактор с поддержкой синтаксиса разных языков программирования Notepad ++ тоже отлично подойдет для того, чтобы открыть JSON-формат на своем компьютере.

Открытие файла формата JSON через notepad++

Впрочем, вы можете использовать для этого практически любую среду разработки, поскольку, как уже было сказано выше, JSON поддерживается разными IDE благодаря встроенным или дополнительным библиотекам.

Создание файла формата JSON

Если же вы хотите создать файл JSON, можно использовать тот же Блокнот.

Создание файла формата JSON через Блокнот

При сохранении вам понадобится выбрать тип файла «‎Все файлы» и самостоятельно добавить к названию .json, чтобы текстовый файл сохранился именно в этом формате.

Вы ознакомились с основной информацией о JSON. Теперь вы знаете, что это за тип файлов, где применяется и по какой структуре работает. Выше я уже дал ссылку на официальный сайт, поэтому можете перейти по ней, если ответ на вопрос, связанный с тонкостями данного формата, вы не получили.

Читайте также: