2015-04-06 58 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"}]