我有一个表应该存储一个id,一个名字和一个哈希。如何序列化哈希? (我使用Ruby和Sequel作为ORM。)
答案 0 :(得分:6)
如果你正在使用Sequel :: Model,那么Serialization plugin就可以了。
答案 1 :(得分:6)
您似乎找到了足够的答案,但我认为我会使用通用的Ruby方式。
# outside of rails you'll need this
require 'base64'
# encode
h = { :first => "John", :age => 23 }
encoded = Base64.encode64(Marshal.dump(h))
# decode
h = Marshal.load(Base64.decode64(encoded))
我使用它来序列化Ruby对象(例如跨越JSON和数据库),你会发现Rails中的cookie会话以相同的方式编码会话哈希。使用此功能从浏览器cookie调试会话内容通常很方便。
答案 2 :(得分:1)
如果您正在寻找JSON-API合规性,我已经与JSONAPI::Serializers好运了。您将需要传入:skip_collection_check
选项,并且为了提高性能,您应该1)传递结果集,而不是数据集,以及2)序列化之前的预加载关系(如果您正在加载数据)。
答案 3 :(得分:0)
您可以试试YAML:
require 'yaml'
# encode
my_hash = { :first => "John", :age => 23 }
encoded = YAML.dump(my_hash)
# decode
my_hash = YAML.load(encoded)
您可以将其存储在续集字符串中,它可以处理复杂的对象,并且可以在数据库中读取。我读到了它here。