require 'json' class JsonTester def self.from_json(text) data = JSON.parse(text) p data if data.include?("data") data = data["data"] end p data new(data["name"], data["parameters"]) end def initialize(name, params) @name, @params = name, params end def to_json(*args) data = {"name" => @name} data["parameters"] = @params { 'json_class' => self.class.name, 'data' => data }.to_json(*args) end end class JsonTesting def initialize @test = JsonTester.new("foo", "a" => "b", "c" => "d") text = @test.to_json puts text other = JsonTester.from_json(text) p other end end