Использование JSON с PowerShell: руководство для ИТ-специалистов

Опубликовано: 28 Февраля, 2023
Использование JSON с PowerShell: руководство для ИТ-специалистов

Если вы ИТ-специалист и частью вашей деятельности является управление Microsoft Azure, кодирование сценариев или Kubernetes, то файлы JSON и YAML должны стать частью вашей повседневной жизни.

В этой статье мы дадим краткое объяснение JSON и поймем, насколько он полезен в нашей повседневной деятельности. JSON (обозначение объектов JavaScript) не зависит от языка и позволяет людям и машинам использовать его (он широко используется при общении между браузером и клиентом), понимать и генерировать данные с использованием этого открытого стандартного формата. По сравнению с аналогичными форматами обмена данными, такими как XML, JSON намного быстрее и требует меньше слов для передачи того же содержания данных.

Основы JSON для ИТ-специалистов

Нам нужно понять три основных компонента вселенной JSON, а именно концепцию объекта, массива (который представляет собой набор объектов) и пары значений.

Первой остановкой в нашем маленьком путешествии по JSON будет Он состоит из поля и поля. Имя поля в двойных кавычках, после него двоеточие (:), а затем поля. поля может быть строкой, числом, объектом, массивом, логическим значением или нулевым значением. Простое представление парных значений приведено ниже:

«Имя»: «Андерсон Патрисио», «ID»: 666, «isCrazy»: true, «isDeceased»: null Объект ограничен фигурными скобками {}, а внутри мы увидим одну или несколько пар значений и запятая будет разделять каждый из них. Пример: { "Страна": "Нидерланды", "Столица": "Амстердам"}

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

[ { «Страна»: «Нидерланды», «Столица»: «Амстердам» }, { «Страна»: «Аргентина», «Столица»: «Буэнос-Айрес» }, { «Страна»; «Камбоджа», «Столица»:"Пномпень" } ]

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

Прежде всего, нужно найти веб-сайт валидатора JSON, и хорошим примером является jsonlint.com. Вы можете скопировать и вставить свои файлы JSON и нажать «Подтвердить JSON», и ваши текущие данные JSON будут проанализированы. Если обнаружены какие-либо ошибки, инструмент предоставит некоторые рекомендации по их устранению.

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

Отличный бесплатный инструмент для работы с файлами JSON — наш старый друг Visual Studio Code. После сохранения файла в формате JSON форматирование и стиль очень помогают при написании файлов JSON. После ввода первых объектов в массиве вы сможете воспользоваться автозаполнением, как показано на изображении ниже.

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

PowerShell и JSON

Чтобы воспользоваться преимуществами JSON с помощью PowerShell, мы должны быть знакомы с двумя очень важными командлетами: ConvertTo-JSON и ConvertFrom-JSON. (Для тех, кто использует PowerShell 7, имейте в виду, что в командлеты JSON были внесены изменения и дополнения.)

Существует несколько способов управления файлами JSON в PowerShell. Хорошим началом является выполнение простого тура между объектными областями JSON и PowerShell с выполнением задач, которые мы описываем ниже. (Изображение с пошаговым описанием было добавлено, чтобы облегчить процесс.)

  1. Пункт 1. Добавляем содержимое JSON в переменную $string.
  2. Пункт 2. Проверяем значение переменной $string.
  3. Пункт 3. Мы конвертируем $string из JSON в объект PowerShell (просто проверяем вывод).
  4. Пункт 4. В это время мы добавляем вывод предыдущего шага в переменную с именем $vPSObject.
  5. Пункт 5. Мы можем эффективно манипулировать данными. Например, получение значения для первой позиции (в данном случае Нидерланды).
  6. Пункт 6. Конвертируем данные из переменной $vPSObject в формат JSON.

В предыдущем примере потоком данных был JSON, затем объект PowerShell, а затем мы вернулись к JSON, который отлично подходит для понимания всех задач, задействованных в процессе, но не практичен.

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

Возьмем более реалистичный пример:

  1. Пункт 1. Мы инициализируем переменную $json как тип массива.
  2. Пункт 2. Создаем переменную $info и определяем и как столбцы.
  3. Пункт 3. Мы добавили в позицию $info.country.
  4. Пункт 4. Мы добавили в позицию $info.capital.
  5. Пункт 5. Выводим содержимое $info, и, как и ожидалось, на первой позиции у нас то, что мы только что добавили в пунктах 3 и 4.
  6. Пункт 6. Добавляем содержимое $info в $json Думайте о $info как о текущей записи, которую мы отслеживаем и добавляем информацию, а $json — как о итоговом отчете.
  7. Пункт 7. Выводим содержимое $json (без сюрпризов, то же самое, что и $info в этой итерации).
  8. Пункт 8. Повторяем предыдущий шаг, чтобы добавить нашу вторую запись ( как страна и как столица).
  9. Пункт 9. Мы добавили новую информацию, которая у нас есть в переменной $info, в $json.
  10. Пункт 10. Мы видим, что содержимое $json теперь содержит обе записи, которые мы добавили в наш код.

Мы можем увидеть содержимое переменной $json в формате , запустив ConvertTo-Json (Item1). Мы также можем отправить нашу информацию из объекта PowerShell прямо в файл JSON, используя тот же командлет, добавленный Out-File (элемент 2).

Мы также можем сделать это же упражнение в обратном порядке. Во-первых, давайте проверим содержимое существующего файла JSON (пункт 1 — в данном случае это был файл SimpleJSON.json). Далее (пункт 2) мы получим содержимое из файла в переменную PowerShell $JSONFromFile, а затем распечатаем содержимое (как и ожидалось, содержимое JSON).

В обычных условиях мы бы загружали содержимое файла JSON с помощью Convert-From. Таким образом, переменная в PowerShell имеет то же содержимое, что и объект PowerShell, поэтому манипулирование становится проще, чем когда-либо (пункт 3).

Изображение 176