"json" hashını düzleştirilmiş bir kareye düzleştirecek, ancak yol bilgisini düzleştirilmiş tuşlarda tutacak bir yöntem arıyorum. Örneğin :Yuvalanmış bir json nesnesini düzleştirme
{"a" => "foo", "b_0_c" => "bar", "b_0_d_0" => "baz"}
"json" hashını düzleştirilmiş bir kareye düzleştirecek, ancak yol bilgisini düzleştirilmiş tuşlarda tutacak bir yöntem arıyorum. Örneğin :Yuvalanmış bir json nesnesini düzleştirme
{"a" => "foo", "b_0_c" => "bar", "b_0_d_0" => "baz"}
Bu sorunu çözmek gerekir:
h = {"a" => "foo", "b" => [{"c" => "bar", "d" => ["baz"]}]}
düzleştirmek (h) dönmelidir
h = {'a' => 'foo', 'b' => [{'c' => 'bar', 'd' => ['baz']}]}
module Enumerable
def flatten_with_path(parent_prefix = nil)
res = {}
self.each_with_index do |elem, i|
if elem.is_a?(Array)
k, v = elem
else
k, v = i, elem
end
key = parent_prefix ? "#{parent_prefix}.#{k}" : k # assign key name for result hash
if v.is_a? Enumerable
res.merge!(v.flatten_with_path(key)) # recursive call to flatten child elements
else
res[key] = v
end
end
res
end
end
puts h.flatten_with_path.inspect
Çok güzel bir çözüm. – pguardiario
Ben benzer bir soru yaşıyorum ve burada onu kaldırdı Best way to produce a flattened JSON (denormalize) out of hierarchical JSON in Ruby, olası bir çözümle
is Benim çözümüm en uygun olanı mı yoksa daha iyi bir yolu var mı?
"Bu ne denediniz" bu durumda gerçekten geçerli olduğunu sanmıyorum. Bu, genel bir soru ve bilgi tabanında olması yararlı. – pguardiario
Belki ama eğer uygularsam, burada olmazdı. Cevabın burada olması gerektiğini düşündüm, bu yüzden sorumu yayınladım. – pguardiario
Oh, sensin, OP. Üzgünüm :) –