首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON摘要为Dashing

JSON摘要为Dashing
EN

Stack Overflow用户
提问于 2017-10-12 13:14:09
回答 2查看 170关注 0票数 0

我正在创建一个漂亮的作业,从API中提取一些数据(运行Ruby)。

代码语言:javascript
复制
SCHEDULER.every '15m', :first_in => 0 do |job|
    url = "https://blah.com
    response = RestClient.get(url, {:Authorization => 'blahblah'})
    current_timelist = JSON.parse(response)

    acctitems = current_timelist.map do |row|
    row = {
      :label => row['member']['name'], 
      :value => row['actualHours']
    }
    end

    # Update the List widget
      send_event('timelist', { items: acctitems } )
end

我想根据成员名称进行总结,但它列出了每个条目。

从API接收到的JSON看起来如下(我缩短了它,只更改了名称),注意actualHours可以是0:

代码语言:javascript
复制
[
    {
        "member": {
            "name": "User 1"
        },
        "actualHours": 0.2
    },
    {
        "member": {
            "name": "User 2"
        },
        "actualHours": 1.5
    },
    {
        "member": {
            "name": "User 2"
        },
        "actualHours": 0.17
    }
]

我也想对此进行排序,这样我就可以让最高级别的成员担任高级职务。我也想发送第二次活动与名单上的顶级人物(这样他们可以得到一个金星)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-12 16:38:38

感谢@Stanislav的代码,因为它构成了修复的基础,我设法开始工作了。

代码语言:javascript
复制
SCHEDULER.every '15m', :first_in => 0 do |job|

  url = "website.com"
  response = RestClient.get(url, {:Authorization => 'BlahBlah'})
  current_timelist = JSON.parse(response)

  time = {}
  acctitems = current_timelist.map do |row|
    key = row['member']['name']
    value = row['actualHours']

    if time[key].nil?
      time[key] = [value]
    else
      time[key].push(value)
    end
  end 

  resulttime = time.map do |result|
  result = {
    :label => result[0],
    :value => result[1].inject(:+)
  }
  end

  # Update the List widget
  send_event('timelist', { items: resulttime })
end
票数 0
EN

Stack Overflow用户

发布于 2017-10-12 13:43:48

正如我从您的问题中了解到的,您需要类似于这样的聚合。

代码语言:javascript
复制
out = h.reduce({}) do |result, item|
  key = item[:member][:name]
  if result[key].nil?
    result[key] = [item[:actualHours]]
  else
    result[key].push(item[:actualHours])
  end
  result
end

它将返回以下输出

代码语言:javascript
复制
{"User 1"=>[0.2], "User 2"=>[1.5, 0.17]}

您可以遍历它并过滤所需的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46710591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档