"json"해시를 병합 된 해시로 전개하지만 병합 된 키에 경로 정보를 유지하는 메소드를 찾고 있습니다. 예를 들어 :중첩 된 json 객체 병합
{"a" => "foo", "b_0_c" => "bar", "b_0_d_0" => "baz"}
"json"해시를 병합 된 해시로 전개하지만 병합 된 키에 경로 정보를 유지하는 메소드를 찾고 있습니다. 예를 들어 :중첩 된 json 객체 병합
{"a" => "foo", "b_0_c" => "bar", "b_0_d_0" => "baz"}
이 문제 해결해야합니다 :
h = {"a" => "foo", "b" => [{"c" => "bar", "d" => ["baz"]}]}
평평하게 (시간)을 반환해야
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
아주 좋은 해결책입니다. – pguardiario
나는 비슷한 문제에 봉착하고 여기 그것을 제기 Best way to produce a flattened JSON (denormalize) out of hierarchical JSON in Ruby 가능한 해결책으로
Is 내 솔루션을 최적의 하나 또는 더 좋은 방법이 있습니까?
나는이 상황에서 "무엇을 시도 했습니까?"라고 생각하지 않습니다. 일반적인 질문이며 지식 기반에 유용합니다. – pguardiario
아마 내가 직접 구현 한 경우 여기에 없을 것입니다. 나는 대답이 여기에 있어야한다고 생각해서 질문을 게시했다. – pguardiario
오, 너 OP 다. 죄송합니다 :) –