Ваша проблема в том, что ваши данные возвращают массивы местами.Попробуйте следующее:
data = [
{
"ID": "295699",
"restriction": [
{
"restrictionTypeCode": "10001"
}
]
}
]
data.first[:restriction].first[:restrictionTypeCode]
# to make this safe from any nil values you may encounter, you might want to use
data.first&.dig(:restriction)&.first&.dig(:restrictionTypeCode)
# => "10001"
# or
data.flat_map { |hsh| hsh[:restriction]&.map { |sub_hsh| sub_hsh[:restrictionTypeCode] } }
# => ["10001"]
Чтобы немного разбить его, ваш отклик верхнего уровня и тот, который попадает под клавишу :restriction
, оба возвращают массивы;поэтому, чтобы получить от них данные, вам нужно либо получить доступ к одному из содержащихся в них элементов (в моем примере это first
), либо отобразить их (второй пример).
Я добавил несколько проверок дляnil
значений там: это очень важно при работе с ответами API, поскольку вы не контролируете данные, поэтому не можете быть уверены, что все поля будут присутствовать.Вместо того, чтобы выдавать ошибку, если вы столкнетесь с такими данными, вы получите nil
, чтобы избежать взлома последующего кода.
Надеюсь, это поможет - дайте мне знать, как вы справляетесь, или если у вас есть какие-либо вопросы:)