2013-04-10 6 views
2

Ruby 객체를 JSON으로 변환하고 JSON을 Ruby 객체로 변환하려고합니다. 내가 본 코드는 모두 JSON이 다시 해시 (사용자 지정 루비 객체가 아닌)로 변환됩니다. 누군가 이것이 어떻게 달성 될 수 있는지 말해 줄 수 있습니까?JSON에서 Ruby 객체로 돌아 가기

+0

찾고있는 것에 대한 자세한 정보를 제공하십시오. 어떤 커스텀 클래스를 사용하고 있습니까? json이 어떻게 만들어지고 있습니까? 너의 아들은 어떻게 생겼어? –

+0

AFAICS, JSON을 객체로 변환하는 데 관심이 있습니다. 왜 _your_ object의 기본 생성자를 사용하여 해시를 매개 변수로 가져 오지 않습니까? – mudasobwa

+0

그러한 JSON을 처리하는 모든 중간 시스템은 최소한 형식을 유지해야하며 (예 : 나중에 저장하기 위해 새 객체를 생성해야하는 경우) 완전히 모델링해야 할 수도 있습니다. JSON이 자체 루비 코드에 의해서만 생성되고 소비되는 경우는 물론 쉽습니다. 그렇다면 마샬 또는 ActiveRecord와 같은 기존 지속성 체계를 사용하지 않을까요? (사실, 스토리지 용 JSON 직렬화를 감싸는 ActiveRecord 구현체를 발견하게되어 놀라지 않을 것입니다.) –

답변

1

개체에서 JSON으로의 변환이 손실됩니다. 사실, 직렬화 프로세스는 클래스를 보존하지 않습니다.

복원하는 유일한 방법은 클래스 이름을 직렬화 된 JSON의 특성으로 전달하고 직렬화 해제 루틴에 해당 클래스의 인스턴스를 인스턴스화하도록 지시하는 것입니다.

앞서 클래스를 알고 있다면 해시에서 새 객체를 초기화하는 클래스에 기능을 추가하기 만하면됩니다.

또 다른 대안은 YAML을 사용하는 것입니다. 여기서 직렬화 된 출력에는 원래 클래스의 이름도 저장됩니다.