如何从Firebase实时数据库JSON导出中提取数据



我有一个Firebase实时数据库导出json,它有嵌套的信息,我想提取这些信息。JSON的结构如下:

{
"users" : {
"024w97mv8NftGFY8THfQIU6PhaJ3" : {
"email" : "xxx",
"id" : "024w97mv8NftGFY8THfQIU6PhaJ3",
"name" : "xxx",
"items" : {
"-LQL9n-r9BGdo3HJZ2sk" : {
"disliked" : true,
"id" : 396,
"name" : "Aaa"
},
"-LQL9oO63nH-QW2w6zz0" : {
"liked" : true,
"id" : 3674,
"name" : "Bbb"
}
}
},
"0ERLT5DLRvbZUnjlnM7Ow0qItpz2" : {
"email" : "zzz",
"id" : "0ERLT5DLRvbZUnjlnM7Ow0qItpz2",
"name" : "zzz",
"items" : {
"-LIZnriSVQMzqTsPFNYa" : {
"id" : 396,
"liked" : true,
"name" : "Aaa"
},
"-LIZnrzOuk4WyjqEiLG8" : {
"disliked" : true,
"id" : 4805,
"name" : "Ccc"
}
}
}
}
}

我需要实现的是获得一个所有喜欢的物品名称的列表,最好是计算一个物品被喜欢的频率。

有没有一个简单的工具或脚本可以做到这一点?首选Ruby或Javascript。非常感谢!

您可以在下面的中解析类似ruby的JSON数据

result_hash = JSON.parse(result)
result_ary = result_hash["users"].collect do |k,v| 
v["items"].values.select{|v1| v1["liked"] == true } 
end
result_data = result_ary.flatten

解析的结果

=> [{"liked"=>true, "id"=>3674, "name"=>"Bbb"}, {"id"=>396, "liked"=>true, "name"=>"Aaa"}]

现在它很容易得到你需要的结果

result_data.collect{|x| x["name"] }
=> ["Bbb", "Aaa"]
result_data.count {|x| x["name"] == "Aaa"}
=> 1
result_data.count {|x| x["name"] == "Bbb"}
=> 1

最新更新