0

Dashing でリストを作成しようとしていて、外部の 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. マイク・ジョン・ヒア・アウト

解析されたjsonを適切に反復処理してにresponse渡すにはどうすればよいsend_eventですか?

マットの質問に答えるだけです:

したがって、リスト ウィジェット用にフォーマットされた JSON ファイルからのすべての値を含む 1 つの「whosHere」イベントが必要です。これには、ラベル: X、値: Y としてフォーマットされた JSON が必要です。

だから私がする必要があるのは、それをjson配列としてフォーマットすることです:

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

現在、次のように保存されています:

label: Mike,Jon, value:Here,out
4

1 に答える 1

0

これを実現するために使用できますcollect。コレクションを反復処理し、Array各要素がブロックの結果である を返します。

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

# [{:label=>"Mike", :value=>"Here"}, {:label=>"Jon", :value=>"Out"}]
于 2015-04-07T03:08:41.243 に答える