Передача строки JSON в качестве аргумента командной строки в скрипт Ruby?

В настоящее время я работаю над редактированием сценария конвейера Azure DevOps и столкнулся с препятствием при попытке реорганизовать существующую реализацию.

Я хочу передать строку JSON в качестве аргумента скрипту Ruby, вызываемому YAML.

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

Был бы признателен, если бы кто-нибудь указал мне правильное направление?

Спасибо.

JSON: {"name": "John", "age": 10, "city": "New York"}

Скрипт:

require 'json'

namespace: test do
  task :getConfigs, [:json_string] do |task, args|
        json_string = args[:json_string]
        configs = JSON.parse(json_string)
        val1 = configs['name']
        val2 = configs['age']
        puts "#{val1} is #{val2} years old."
    end

ЯМЛ:

- script: bash -i -c 'rake test:getConfigs["$json_data"] //json_data being a Pipeline variable.

Как я вызываю его в Терминале локально:

 rake "test:getConfigs[\"{\"name\": \"John\", \"age\": 10, \"city\": \"New York\"}\"]"

или другой вариант без экранирования символов.

Я продолжаю получать ошибку JSON::ParserError: 767: unexpected token at 'name": "John"'

Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
0
0
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Команда ниже должна работать.

rake "test:getConfigs[{\"name\": \"John\"\, \"age\": 10\, \"city\": \"New York\"}]"

Вау, спасибо большое. Сработало как по волшебству. :)

mads 26.02.2024 16:32

Другие вопросы по теме