Я делаю простую игру палача в проекте Odin с возможностью сохранения и загрузки игры.Ruby - Почему unserialization от JSON выводит Array вместо моего класса?
Я уже сериализовать мой класс в формате JSON и сохранить его в файл, содержимое выглядеть следующим образом:
{"@password":["p","r","o","f","u","s","e","l","y"],"@password_checked":["_","_","_","_","u","_","_","_","_"],"@chances":8,"@picked_letters":["u","a"]}
Мои методы сериализации и десериализации приходят из https://www.sitepoint.com/choosing-right-serialization-format/, и они выглядят следующим образом:
require 'json'
module BasicSerializable
@@serializer = JSON
def serialize
obj = {}
instance_variables.map do |var|
obj[var] = instance_variable_get(var)
end
@@serializer.dump obj
end
def unserialize(string)
obj = @@serializer.parse(string)
obj.keys.each do |key|
instance_variable_set(key, obj[key])
end
end
end
Мой код десериализируются выглядеть следующим образом
file = File.new(game_to_load, 'r')
serialized_object = file.gets # serialized_object is the file from above
p @password.class #=> Password
@password = unserialize(serialized_object)
p @password.class #=> Array
p @password #=> ["@password", "@password_checked", "@chances", "@picked_letters"]
Проблема в том, что я не могу понять, почему unserialization serialized_object
выводит мне массив. Как заставить его выводить мой класс с состоянием объекта, сохраненного в файле, указанном в начале?
Где этот незамерзающий код в конце? Это в классе? Или он сидит в главном коде? – Schwern