2016-02-28 8 views
2

У меня есть массив массивов, который я бы хотел преобразовать в json и выводить в другом массиве. У меня есть следующий массив:Преобразование массива массивов в JSON

weekdays = [["Monday",2],["Tuesday",4],["Thursday",5]] 

Я хотел бы включить этот массив в пределах вывода JSON, как так:

json_output = { :results => weekdays.count, :data => weekdays } 

Сейчас я получаю это, что просто выглядит не так, как есть не фигурные скобки вокруг поля «данные» ...

{ 
    "results": 2, 
    "data": [ 
     ["Monday", 2], 
     ["Tuesday", 4], 
     ["Thursday", 5] 
    ] 
} 

Любая помощь будет замечательной!

+0

Может быть, это [Как преобразовать Javascript массив Массивы в JSON строки] (http://stackoverflow.com/questions/6224526/how-to-convert-a-javascript-array-of-arrays -into-a-json-string) полезно – Nikos

ответ

1

Выход правильный. Кудрявые скобки вокруг хэшей, но ваш атрибут данных является вложенным массивом.

Если вы хотите, чтобы преобразовать вложенный массив в хэш, просто вызовите to_h на него:

{ :results => weekdays.count, :data => weekdays.to_h } 
+0

ahh, поэтому, если я хочу, чтобы он понравился, как и большинство JSON, мне нужно сначала преобразовать его в хэш и назначить ключи - тогда я могу включить его, как указано выше? – Brandon

+0

супер полезно, вау - спасибо! связанный комментарий, должен ли я включать метки для каждого из элементов в «данных», мне нужно создать хеш вместо массива? – Brandon

+0

Да, работа с хэш-файлом значительно упрощает добавление дополнительных атрибутов. – spickermann

0

Лучше, чтобы преобразовать его в хэш вручную.

weekdays = [["Monday",2],["Tuesday",4],["Thursday",5]] 

hash_weekdays = Hash.new 
weekdays.each do |item| 
hash_weekdays[item[0]] = item[1] 
end 

hash_weekdays #=> {"Monday"=>2, "Tuesday"=>4, "Thursday"=>5} 
Смежные вопросы