我有一个如下所示的 JSON 对象:
{ “名称”:“培根” “类别”:[“食物”,“肉类”,“好”] “卡路里”:“巨大” }
我试图将其展平为一组独特的值。我需要为无法直接处理交叉制表数据或 JSON 数据的 Tableau 构建事实表。
我对我是用 Python 还是 Ruby 来做这件事并不挑剔,但到目前为止,我一直在尝试用 Ruby 来做。我能够轻松解析 JSON 并从中获取 Ruby 哈希,这似乎是首先要做的正确事情。
{"name"=>"bacon", "category"=>["food", "meat", "good"], "calories" => "huge"}
我需要制作这个:
name,category,calories
bacon,food,huge
bacon,meat,huge
bacon,good,huge
所以我认为我需要遍历该哈希并尝试取消嵌套它。我一直在尝试这样的事情:
def Flatten(inHash)
inHash.each do |key,value|
if value.kind_of?(Hash)
Flatten(value)
else
puts "#{value}"
end
end
end
但是,这似乎打印了所有的值,但它并没有重复之前的值。所以我得到的输出看起来像
bacon
food
meat
good
huge
是否有内置的方法、gem 或库可以实现这个或者我正在从头开始构建?关于如何获得我想要的输出的任何想法?我会说 Ruby 和 Python,所以如果你有 Python 答案,请分享。