2016-02-28 180 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}