在Dashing中通过JSON数组迭代List

时间:2015-04-06 00:55:01

标签: ruby dashing

我试图在Dashing中创建一个List并且我设法引入了我的外部JSON,但是我在迭代它以创建新的JSON数组以将其发布出去时遇到了问题到我的列表小部件。这是当前的代码:

require 'rubygems'
require 'json'
require 'pp'

name_list = Hash.new({ value: 0 })


SCHEDULER.every '10s' do
    json = File.read('/Users/research/inoutdash/sweet_dashboard_project/jobs/list.json')
    response = JSON.parse(json)

    name_list[response] = {label: response.keys, value: response.values}
    send_event('whosHere', { items: name_list.values })
    puts response.keys
    puts response.values
end

这是我的JSON文件,它来自:

{
  "Mike":"Here",
  "Jon": "Out"
}

小部件的输出目前如下所示:

  1. MikeJon Here,Out
  2. 如何正确迭代已解析的json response并将其传递给send_event

    回答马特的问题:

    所以我需要的是一个' whosHere'具有为Lis​​t小部件格式化的JSON文件中的所有值的事件 - 需要JSON格式化为标签:X,值:Y。

    所以我需要它做的是将它格式化为json数组:

    label: "Mike", value: "Here"
    label: "Jon", value: "Out"
    

    现在它存储为:

    label: Mike,Jon, value:Here,out
    

1 个答案:

答案 0 :(得分:0)

您可以使用collect来完成此操作。它迭代一个集合并返回一个Array,其中每个元素都是一个块的结果。

name_list = response.collect { |(name, status)| { :label => name, :value => status } }

# [{:label=>"Mike", :value=>"Here"}, {:label=>"Jon", :value=>"Out"}]