вложенный массив ruby TypeError: неявное преобразование Ha sh в целое число - PullRequest
0 голосов
/ 04 февраля 2020
def get_att(webinar_id)
  finalArray = []
  api_service = ApiService.new
  response = api_service.get_attendees(webinar_id)
  json = JSON.parse(response.body)

  for x in json['_embedded']['attendeeParticipationResponses']
    first_name = json['_embedded']['attendeeParticipationResponses'][x]['firstName']
    last_name = json['_embedded']['attendeeParticipationResponses'][x]['lastName']
    email = json['_embedded']['attendeeParticipationResponses'][x]['email']
    finalArray << [first_name, last_name, email]
  end

  # x = 2
  # first_name = json['_embedded']['attendeeParticipationResponses'][x]['firstName']
  # last_name = json['_embedded']['attendeeParticipationResponses'][x]['lastName']
  # email = json['_embedded']['attendeeParticipationResponses'][x]['email']
  # finalArray << [first_name, last_name, email]

  Rails.logger.info(finalArray)
end

Идея состоит в том, чтобы вернуть массив массивов со всеми людьми и их 3 тегами.

Я знаю, что данные синтаксического анализа JSON работают, потому что закомментированный код работает отлично, и я могу изменить назначение x, и он запускается. Функция for l oop также работает, поскольку при добавлении счетчика она подсчитывает 15 ответов в json['_embedded']['attendeeParticipationResponses']. Так что я знаю, что там 15 человек, и я могу добавить их одного за другим в окончательный массив (который, между прочим, у меня есть для хранения нескольких массивов), но по какой-то причине второй я положил его в для l oop I получить странную ошибку, которая полностью гласит:

TypeError: no implicit conversion of Hash into Integer from /Users/josh/Documents/GitHub/schools_health/lib/go_to_webinar/to_pipeline.rb:19:in `[]'

1 Ответ

0 голосов
/ 04 февраля 2020

Не бери в голову, я это исправил! Это была проблема синтаксиса.

Я пришел из более Java фона, а синтаксис l oop для ruby делает x объектом. Я думал, что он будет содержать индекс массива. Я исправил это, изменив ссылки внутри l oop с:

first_name = json['_embedded']['attendeeParticipationResponses'][x]['firstName']

на:

first_name = x['firstName']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...