разбор json для лихого виджета панели инструментов

Я пробую код ниже, я использую некоторое время, потому что я не знаю длину массива. но я получаю эти ошибки

этот API возвращает JSON ниже, я хотел бы иметь только карту с меткой, nb_uniq_visitors

Посмотрите на строку JSON.

[
  {
    "label": "Australia",
    "nb_uniq_visitors": 1,
    "nb_visits": 1,
    "nb_actions": 2,
    "nb_users": 0,
    "max_actions": 2,
    "sum_visit_length": 519,
    "bounce_count": 0,
    "nb_visits_converted": 0,
    "code": "au",
    "logo": "plugins\/UserCountry\/images\/flags\/au.png",
    "segment": "countryCode==au",
    "logoWidth": 16,
    "logoHeight": 11
  },
  {
    "label": "United States",
    "nb_uniq_visitors": 1,
    "nb_visits": 1,
    "nb_actions": 1,
    "nb_users": 0,
    "max_actions": 1,
    "sum_visit_length": 0,
    "bounce_count": 1,
    "nb_visits_converted": 0,
    "code": "us",
    "logo": "plugins\/UserCountry\/images\/flags\/us.png",
    "segment": "countryCode==us",
    "logoWidth": 16,
    "logoHeight": 11
  }
]

Планировщик поймал исключение:

нет неявного преобразования String в Integer /home//mixed_dashboard/jobs/visitsbycountry.rb:25:in []' /home//mixed_dashboard/jobs/visitsbycountry.rb:25:inblock in '/var/lib/gems/2.1.0/gems/rufus-scheduler-2.0.24/lib/rufus/ sc/jobs.rb:230:в call' /var/lib/gems/2.1.0/gems/rufus-scheduler-2.0.24/lib/rufus/sc/jobs.rb:230:in trigger_block'/var/lib/gems/2.1.0/gems/rufus-scheduler-2.0.24/lib/rufus/sc/jobs.rb:204:в block in trigger' /var/lib/gems/2.1.0/gems/rufus-scheduler-2.0.24/lib/rufus/sc/scheduler.rb:430:in call'/var/ lib/gems/2.1.0/gems/rufus-scheduler-2.0.24/lib/rufus/sc/scheduler.rb:430:in `блок в trigger_job'

-------------------------------------------------- - КОД НИЖЕ ----------------------

   require 'rubygems'
   require 'net/http'
   require 'json'

   server = ""

   SCHEDULER.every '30s', :first_in => 0 do |job|  


   url = URI.parse("#{server}")
   http = Net::HTTP.new(url.host, url.port)  
   request = Net::HTTP::Get.new(url.request_uri)
   response = http.request(request)
   j = JSON[response.body]

   # Convert to JSON

   countries = []
   $i=0
   $num = 5

    while $i < $num do 

      country_name = j["label"]
      country_visits = j["nb_unique_visits"]
      countryHash = {country_name => country_visits}
      countries.push(countryHash)
      $i+=1
    end 


   send_event('buzzwords', { items: countries }) 
   end

person Youngdev    schedule 03.12.2015    source источник
comment
Прежде всего, у вас есть бесконечный цикл while.   -  person Yevgeniy Anfilofyev    schedule 03.12.2015
comment
Да, я новичок в рубине, но я учил, что это закончится, когда мне будет 5?   -  person Youngdev    schedule 03.12.2015
comment
Я не вижу, где вы увеличиваете $i?   -  person Yevgeniy Anfilofyev    schedule 03.12.2015
comment
ваше право позвольте мне добавить, что. спасибо   -  person Youngdev    schedule 03.12.2015


Ответы (1)


Попробуй это

  country_visits = j["nb_unique_visits"].to_i
person sam    schedule 04.12.2015