【问题标题】:parsing json for dashing dashboard widget解析 json 以获取仪表板小部件
【发布时间】:2015-12-03 08:51:10
【问题描述】:

我正在尝试下面的代码,我使用了一段时间,因为我不知道数组的长度。但我得到这个错误

这个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
  }
]

调度程序捕获异常:

没有将字符串隐式转换为整数 /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:in 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:in 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 `block 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

【问题讨论】:

  • 首先你有无限的while循环。
  • 是的,我是 ruby​​ 新手,但我教过它会在我 5 岁时结束?
  • 我看不出你在哪里增加$i?
  • 你的权利让我补充一下。谢谢

标签: ruby ubuntu dashing


【解决方案1】:

试试这个

  country_visits = j["nb_unique_visits"].to_i

【讨论】:

    猜你喜欢
    • 2012-05-11
    • 2014-04-02
    • 2017-05-17
    • 2013-11-05
    • 2017-03-20
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多