0
我想平坦的嵌套哈希。我的散列具有這種結構:在哈希數組中轉換紅寶石嵌套哈希
{
"asNew":"N",
"categoryId":40000007,
"categoryName":"CATALOGO",
"categoryType":"TYPE_NODE",
"contentId":40000007,
"contentTitle":"CATALOGO",
"contentType":"CATEGORY_NODE",
"orderId":0,
"urlPictures":""
}
基本上每個鍵「所屬分類」具有陣列值和:
{
"errorDescription":"",
"message":"",
"resultCode":"OK",
"resultObj":{
"categoryList":[
{
"asNew":"N",
"categoryId":40000000,
"categoryList":[
{
"asNew":"N",
"categoryId":40000007,
"categoryList":[
],
"categoryName":"CATALOGO",
"categoryType":"TYPE_NODE",
"contentId":40000007,
"contentTitle":"CATALOGO",
"contentType":"CATEGORY_NODE",
"orderId":0,
"urlPictures":""
},
{
"asNew":"N",
"categoryId":40000018,
"categoryList":[
{
"asNew":"N",
"categoryId":40000019,
"categoryList":[
],
"categoryName":"CANALI CALCIO",
"categoryType":"TYPE_VOD",
"contentId":40000019,
"contentTitle":"CALCIO & SPORT",
"contentType":"CATEGORY_LEAF",
"orderId":0,
"urlPictures":""
},
{
"asNew":"N",
"categoryId":40000020,
"categoryList":[
],
"categoryName":"CANALI CINEMA",
"categoryType":"TYPE_VOD",
"contentId":40000020,
"contentTitle":"CINEMA & SERIE",
"contentType":"CATEGORY_LEAF",
"orderId":1,
"urlPictures":""
}
],
"categoryName":"CANALI TV",
"categoryType":"TYPE_NODE",
"contentId":40000018,
"contentTitle":"CANALI TV",
"contentType":"CATEGORY_NODE",
"orderId":1,
"urlPictures":""
}
],
"categoryName":"ROOT",
"categoryType":"TYPE_NODE",
"contentId":40000000,
"contentTitle":"ROOT",
"contentType":"",
"orderId":0,
"urlPictures":""
}
]
}
}
我必須在對象的數組,其中每個對象具有這種結構該散列變換這個數組有一個或多個散列與另一個鍵「categoryList」。我必須將每個categoryList數組中的所有對象移動到另一個沒有categoryList'鍵'的數組中。
編輯
我加入這個方法湊類
class Hash
def find_all_values_for(key)
result = []
result << self[key]
unless self.values.nil?
self.values.each do |values|
values = [values] unless values.is_a? Array
values.each do |value|
result += value.find_all_values_for(key) if value.is_a? Hash
end
end
end
result.flatten.compact
end
end
而我得到的陣列刪除所屬分類鍵
h.map { |c| c.except!('categoryList') }
它的工作原理,但meybe還有一個更地圖高效的方式。
我建議你拿一把砍刀作爲例子,以減少它到最基本的要領。例如,可以在你的對象數組中的哈希值只是:'{ 「asNew」: 「N」, 「的categoryId」:40000007, 「類別名稱」: 「CATALOGO」, 「categoryType」: 「TYPE_NODE」 }'?另外,如果'h'是你的哈希,是不是希望平坦化?h [「categoryList」]? –