#ruby
#ruby
Вопрос:
Я новичок в ruby и начал использовать его последние несколько дней, поэтому приношу свои извинения, если я спрашиваю что-то очень простое.
Я ищу способ преобразовать следующий массив в хэш.
arr =>
{"id"=>"xxx", "name"=>"show all", "parent_id"=>"yyy", "tsuite_name"=>"show system", "tc_external_id"=>"zzz"}
где arr.length равно 1.
Я попытался обойти это, но не смог преобразовать его в хэш.
Мне это было нужно, потому что Testlink xmlrpc отвечает в формате, показанном выше.
Любая помощь по этому вопросу была бы очень полезной.
Спасибо.
Комментарии:
1. Ваш массив уже является хэшем, или в вашем коде чего-то не хватает
2. Я думаю, что чего-то не хватает. Я не вижу массива.
3. @Ray — Фактический ответ xmlrpc был «[{«id»=> «xxx», «name» =>»показать все», «parent_id»=> «гггг», «tsuite_name» =>»показать систему», «tc_external_id» => «zzz»}]»
4. Ах, хорошо, тогда просто возьмите элемент 0 массива, и у вас будет ваш хэш. 🙂
Ответ №1:
Добро пожаловать в Ruby!
Приведенная ниже конструкция является хэшем.
{"id"=>"xxx", "name"=>"show all", "parent_id"=>"yyy", "tsuite_name"=>"show system", "tc_external_id"=>"zzz"}
Если бы это был массив, он был бы окружен фигурными скобками:
[{"id"=>"xxx", "name"=>"show all", "parent_id"=>"yyy", "tsuite_name"=>"show system", "tc_external_id"=>"zzz"}]
Но я думаю, что вам дали следующее:
{ "arr" => {"id"=>"xxx", "name"=>"show all", "parent_id"=>"yyy", "tsuite_name"=>"show system", "tc_external_id"=>"zzz"} }
Вышеупомянутый объект представляет собой хэш внутри хэша. length
Метод сообщил 1, потому что хэш содержал только один ключ, а именно arr
.
Вы можете протестировать класс переменной с class
помощью метода:
$ irb
>> var = { "arr" => {"id"=>"xxx", "name"=>"show all" } }
=> { "arr" => {"id"=>"xxx", "name"=>"show all" } }
>> var.class
=> Hash
Если все, что вам нужно, это значение внутреннего хэша, тогда возьмите его следующим образом:
>> keep = var["arr"]
=> {"id"=>"xxx", "name"=>"show all" }
Если я совершенно неправильно понял ваш вопрос, пожалуйста, уточните.
Комментарии:
1. Karrick — Спасибо за ответ. Это был только массив, вывод был заключен только в фигурные скобки, как показано в вашем ответе. Есть ли способ преобразовать это в хэш?
2. Другими словами, вы можете получить любой элемент из массива, используя его индекс внутри фигурных
arr[0]
скобок . Обычный ярлык в Ruby — использоватьfirst
метод для получения первого элемента из массива :arr.first
.