Итерация по массиву JSON для списка в Dashing

Я пытаюсь создать список в Dashing, и мне удалось ввести свой внешний JSON, но у меня возникают проблемы с итерацией по нему, чтобы создать новый массив JSON для публикации его в моем виджете List. Вот текущий код:

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?

Просто в ответ на вопрос Мэтта:

Итак, мне нужно одно событие whosHere со всеми значениями из файла JSON, отформатированного для виджета List, для которого требуется формат JSON как метка: X, значение: Y.

Итак, что мне нужно сделать, это отформатировать его как массив json с помощью:

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

где теперь он хранится как:

label: Mike,Jon, value:Here,out

person Mike    schedule 06.04.2015    source источник
comment
Можете ли вы объяснить, что вы хотите получить на выходе? то есть, что вы хотите отправить send_event? Одно событие whosHere для каждого пользователя? Или одно событие для всех пользователей, которые находятся здесь, и другое для всех пользователей, которые находятся вне? Что-то другое?   -  person Matt Zukowski    schedule 06.04.2015


Ответы (1)


Вы можете использовать collect для этого. Он перебирает коллекцию и возвращает Array, где каждый элемент является результатом блока.

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

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