Hash
의 하위 클래스 인 클래스 Foo
이 있습니다.Ruby YAML에서 해시 하위 클래스를 간단한 해시로 덤프하는 방법은 무엇입니까?
class Foo < Hash
# whatever Foo-specific methods/etc
end
YAML을 사용하여 파일에 덤프 할 때 클래스를 나타내는 태그가 작성됩니다.
> f = Foo.new
> f[:bar] = "baz"
> puts YAML.dump(f)
--- !ruby/hash:Foo
:bar: baz
내 데이터의 소비자에 대한 Foo
을 알 필요가 없습니다 있도록이 그냥 평범한 오래된 해시 (하지 !ruby/hash:Foo
)
> puts YAML.dump({bar:"baz"})
---
:bar: baz
과 같이 쓸 수 싶습니다. 직렬화를 위해 자체 클래스로 변환하는 마법 클래스를 추가하거나 마법 옵션을 YAML.dump로 전달하는 마법 메서드가 있습니까?
물론 하나의 Foo
개체를 해시로 변환하는 것은 쉽지만 실제로 덤프 할 실제 해시 내부의 모든 수준에 중첩되어 표시 될 수 있습니다. 검색을 수행하지 않아도됩니다. 바꾸다.
당신이 예제 코드, 당신이보고 싶은 방법을 보여주는 문제와 예제 출력을 보여줍니다 예를 들어, YAML 출력을 보여 주면 그것은 도움을 것입니다. http://sscce.org/ –
@theTinMan의 "e"부분을보십시오 - done – sosiouxme