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