私はRubyを初めて使用しています。私は以下の形式で既存のJSONファイルを持っています。Rubyで既存の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"
}
]
}
]
}
}
私はRubyプログラムでこのファイルを読んで、私は以下のコード
@template_file = JSON.parse(File.read('SummaryTemplate.json'))
@ASR_Test = @template_file['ASRtest']
@ASR_Test
@scenario = @ASR_Test['Scenario']
Iを使用してファイルを読んだ
{
"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"
}
]
}
]
}
}
のように、このファイルに別のシナリオにしたいのです下記のコードを試してください
@scenario[1]['ScenarioNumber'] = 2
それは私にエラーを与えていません。[n]:NilClass(NoMethodError) 変数@scenarioは1回の出現しか持たず、2回目の出現を追加できません。
誰かがこの問題を助けてくれますか?
こんにちはLukas私はすでにこのアプローチを使用しようとしていて、うまくいきませんでした。シナリオ内の現在のオブジェクトを新しいオブジェクトに置き換えるだけです。 Suryaが投稿した答えはうまくいった。 – Anoop
お返事ありがとうございました。あなたの時間を感謝します。 – Anoop
こんにちはルーカス私はあなたの解決策をもう一度試してみました。私がしなければならなかった唯一の調整は、TestCase変数を動的に設定するための長い参照でした。 new_scenario ['TestCase'] [0] ['TestCaseNumber'] = 2 – Anoop