중첩 된 해시 (중첩 된 임의의 깊이)를 일련의 중첩 된 OpenStructs로 변환해야하는 방법은 무엇입니까? 큰 YAML 파일로로드 중이며 accessing['everything']['like']['this']
을 즐기고 있지 않습니다.중첩 된 YAML을 중첩 된 배열 및 Ruby의 OpenStructs로 변환하는 방법
Google을 사용하여 몇 가지 부분 솔루션을 찾았지만, 여기에 좋은 질문이 될 것이라고 생각했습니다.
는 여기에 내가 http://andreapavoni.com/blog/2013/4/create-recursive-openstruct-from-a-ruby-hash에서 발견 된 솔루션 중 하나입니다 :이 솔루션
# deep_struct.rb
require 'ostruct'
class DeepStruct < OpenStruct
def initialize(hash=nil)
@table = {}
@hash_table = {}
if hash
hash.each do |k,v|
@table[k.to_sym] = (v.is_a?(Hash) ? self.class.new(v) : v)
@hash_table[k.to_sym] = v
new_ostruct_member(k)
end
end
end
def to_h
@hash_table
end
end
문제가 계정에 배열을하지 않는다는 것입니다.
솔루션이 작동하지 않습니까? –
@SergioTulentsev 네, 그들은 괜찮은 것처럼 보이지만 사람들이 사용하고있는 다른 솔루션을 보는 데 관심이 있습니다. 질문이 없습니다. – Undistraction
당신은 왜 그들 중 몇 가지를 게시하지 않으며 왜 당신이 그들을 좋아하지 않는 말해? –