Есть ли способ получить значение ключа в ruby ​​и сохранить его в переменной - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь получить значение ключа и пытаюсь сохранить его в массиве

Ниже приведен пример кода,

require 'rubygems'

require 'json'

opt=[]


response_assigned = {
    "poll_id": 1194

}

opt << [JSON.parse(response_assigned)['poll_id']]

Используя ruby, я пыталсяпреобразовать переменную poll_id в строку,

opt << [JSON.parse(response_assigned)['poll_id'].to_s,channel_id]

, но выдает ту же ошибку.

'convert_encoding': {: poll_id => 1194} не похож на строку (TypeError)

1 Ответ

1 голос
/ 30 сентября 2019

response_assigned уже Hash. Вы можете получить доступ к значениям через :[];здесь нет необходимости использовать JSON.parse. (Этот метод используется для преобразования JSON string s в хэши, подобно объекту, который у вас уже есть!)

Также, более тонкое замечание: в ruby ​​есть два различных типа объектов:String и Symbol.

Определив свой объект следующим образом: {"poll_id": 1194}, вы сделали хеш-ключ символом . Это эквивалентно записи: {poll_id: 1194}, или: {:poll_id => 1194}.

Поэтому, чтобы получить доступ к значению, вы можете использовать:

opt << response_assigned[:poll_id]

Если выЕсли вы хотите сделать хеш-ключ String вместо Symbol, вы можете написать:

response_assigned = {
  "poll_id" => 1194
}

opt << response_assigned["poll_id"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...