Итерация по массиву 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"
}

Вывод в виджет в настоящее время выглядит следующим образом:

  1. 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"}]
Другие вопросы по тегам