Я новичок в рубине. У меня есть существующий JSON-файл в следующем формате.Добавить новые значения в существующую массив JSON в рубине
{
"ASRtest": {
"ASRHDR": "This is asr HDR",
"ASRTestType": "DevTest",
"Scenario": [
{
"ScenarioNumber": 1,
"ScenarioName": "HTTP Validation",
"ScenarioDescription": "Validate if the API alows access over HTTP",
"ScExecutionStatus": "Execution Complete",
"ScenarioStatus": "In-Complete",
"ScenarioSeverity": false,
"TestCase": [
{
"TestCaseNumber": 1,
"TestCaseName": "HTTP Validation - using POST method ",
"TcExecutionStatus": "Execution Error",
"TcStatus": "NA",
"TcSeverity": "NA"
}
]
}
]
}
}
Я читаю этот файл в моей рубиновой программе и хочу другой сценарий к этому файлу Как
{
"ASRtest": {
"ASRHDR": "This is asr HDR",
"ASRTestType": "DevTest",
"Scenario": [
{
"ScenarioNumber": 1,
"ScenarioName": "HTTP Validation",
"ScenarioDescription": "Validate if the API alows access over HTTP",
"ScExecutionStatus": "Execution Complete",
"ScenarioStatus": "In-Complete",
"ScenarioSeverity": false,
"TestCase": [
{
"TestCaseNumber": 1,
"TestCaseName": "HTTP Validation - using POST method ",
"TcExecutionStatus": "Execution Error",
"TcStatus": "NA",
"TcSeverity": "NA"
}
]
},
{
"ScenarioNumber": 2,
"ScenarioName": "SC2",
"ScenarioDescription": "Desc",
"ScExecutionStatus": "Execution Complete",
"ScenarioStatus": "In-Complete",
"ScenarioSeverity": false,
"TestCase": [
{
"TestCaseNumber": 1,
"TestCaseName": "Some Name ",
"TcExecutionStatus": "Execution Error",
"TcStatus": "NA",
"TcSeverity": "NA"
}
]
}
]
}
}
Я прочитал файл, используя приведенный ниже код
@template_file = JSON.parse(File.read('SummaryTemplate.json'))
@ASR_Test = @template_file['ASRtest']
@ASR_Test
@scenario = @ASR_Test['Scenario']
, когда я попробуйте приведенный ниже код
@scenario[1]['ScenarioNumber'] = 2
это дает мне ошибку undefined method `[] = 'для nil: NilClass (NoMethodError) переменная @scenario имеет только 1 вхождение, и это не позволяет мне добавить второе вхождение.
Не могли бы вы помочь мне с этой проблемой.
Привет, Лукас. Я уже пытался использовать этот подход, и это не сработало. Он просто заменяет текущий объект в сценарии новым. Ответ, написанный Сурья, сработал. – Anoop
В любом случае спасибо за ваш ответ. Цените свое время. – Anoop
Hi Lukas Я снова попробовал ваше решение, и это сработало. Единственная настройка, которую я должен был сделать, - это длинная ссылка переменной TestCase для динамической настройки. new_scenario ['TestCase'] [0] ['TestCaseNumber'] = 2 – Anoop