Итерация по массиву JSON для списка в лихой
Я пытаюсь создать список в 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"
}
Вывод в виджет в настоящее время выглядит следующим образом:
- MikeJon Здесь,Out
Как правильно перебрать проанализированный json response
и передать его send_event
?
Просто в ответ на вопрос Мэтта:
Поэтому мне нужно одно событие whosHere со всеми значениями из файла JSON, отформатированного для виджета "Список", для которого необходимо отформатировать JSON в виде метки: X, значение: Y.
Поэтому мне нужно отформатировать его как массив json с помощью:
label: "Mike", value: "Here"
label: "Jon", value: "Out"
где сейчас хранится как:
label: Mike,Jon, value:Here,out
1 ответ
Ты можешь использовать collect
чтобы сделать это. Он перебирает коллекцию и возвращает Array
где каждый элемент является результатом блока.
name_list = response.collect { |(name, status)| { :label => name, :value => status } }
# [{:label=>"Mike", :value=>"Here"}, {:label=>"Jon", :value=>"Out"}]