Batch: как из JSON получить переменную?
Введение
Batch-скрипты применяются для автоматизации рутинных задач на Windows-компьютерах. Вся мощь синтаксиса батников заключается в возможности взаимодействия с операционной системой, в том числе и с использованием JSON.
JSON – это формат обмена данными, который является основным для передачи информации в HTTP-запросах, таких как AJAX. Когда мы отправляем запрос на сервер и ожидаем ответа в формате JSON, вопрос состоит в том, как извлечь переменные из ответа и использовать их в нашем Batch-скрипте.
Шаг 1: Получение данных
Первым шагом является получение данных в формате JSON. Для того чтобы получить ответ от сервера в этом формате, можно использовать утилиту curl
. Допустим, мы отправляем запрос на сервер и ожидаем словарь, содержащий переменные "foo" и "bar". Данный запрос можно отправить следующей командой:
curl -s http://example.com/data.json > data.json
Эта команда отправляет запрос на example.com
и записывает ответ в файл data.json
.
Шаг 2: Извлечение переменных
Для извлечения переменных из ответа в формате JSON нам нужно установить парсер json.exe. Это можно сделать с помощью команды:
choco install -y json
Затем необходимо прочитать содержимое файла data.json
с помощью команды:
SET /P data=<data.json
Теперь мы можем использовать парсер json.exe
для извлечения переменных из полученных данных. К примеру, чтобы получить значение переменной "foo", используйте следующую команду:
FOR /f "tokens=2 delims=:," %%j IN ('echo %data% ^| json.exe foo') DO SET "foo=%%~j"
Данный код извлекает значение переменной "foo" из нашего словаря с помощью json.exe
и сохраняет его в переменную foo
.
Вы можете использовать этот же код для извлечения любой переменной из полученного JSON-объекта.
Заключение
Теперь вы знаете, как извлечь переменные из ответа в формате JSON в Batch-скрипте. Не забывайте, что этот пример использует встроенный парсер json.exe
, который устанавливается с помощью утилиты Chocolatey. Если вы используете другой парсер JSON, то нужно адаптировать код для вашей среды. Удачи!