2013-09-19 1 views
1

Учитывая следующий Рубиновый структуру данных:Сформировать массив JSON из хэша в JBuilder

data = { :a => 1, :b => 2 } 

... Я хочу создать следующий JSON:

{"result":[ 
    {"letter":"a","number":"1"}, 
    {"letter":"b","number":"2"} 
]} 

Как выполнить это с помощью Rails JBuilder?

В идеале, я хотел бы перейти непосредственно из объекта Hash в объект JBuilder, не переведя сначала Hash в массив.

ответ

6

Это очень просто.

require 'jbuilder' 

data = { :a => 1, :b => 2 } 

out = Jbuilder.encode do |json| 
    json.result data do |kv| 
     json.letter kv[0] 
     json.number kv[1] 
    end 
end 

puts out #=> {"result":[{"letter":"a","number":1},{"letter":"b","number":2}]} 
+0

Я надеялся избежать преобразования ключа хэша & значение в двухэлементный массив, но пока это единственный способ, который я нашел, что работает. –

3

Я предпочитаю это обозначение, так как он изолирует ключ от значения:

require 'jbuilder' 

data = { :a => 1, :b => 2 } 

Jbuilder.encode do |json| 
    json.result data do |k, v| 
     json.letter k 
     json.number v 
    end 
end 

основном идентичен предыдущему ответу, но немного проще

 Смежные вопросы

  • Нет связанных вопросов^_^