2015-04-06 44 views
0

我想在Dashing中创建一个List,并且设法引入了我的外部JSON,但是我通过它迭代创建新的JSON数组发布到我的列表小部件。下面是当前的代码:迭代通过JSON数组中的Dashing列表

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" 
} 

输出到widget目前看起来是这样的:

  1. MikeJon这里,走出

如何正确迭代解析的json response并将其传递给send_event

只是在回答Matt的问题:

所以我需要的是一个“whosHere”从格式化的列表插件的JSON文件中的所有值的事件 - 需要JSON格式的标签:X,值: Y.

所以我需要做的是将其格式化为JSON阵列:

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

那里现在它存储为:

label: Mike,Jon, value:Here,out 
+1

你能解释一下你想要的结果吗?即,你想send_event发送什么?每个用户都有一个'whosHere'事件?或者是所有“这里”用户的一个事件,而另一个是所有“外出”用户的事件?还有别的吗? – 2015-04-06 17:24:09

回答

0

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

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

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