我正在使用Redis :: Objects
https://github.com/nateware/redis-objects
我想在将对象转换为JSON之前在演示者中修改类,所以我想要做的是合并一个键,但不必管理演示者中redis对象类的访问器。
class MyOb
include Redis::Objects
value :foo
value :bar
end
myob = new MyOb
myob.foo = "foo"
# I can do
myob.to_json #=> valid string with foo and bar keys
# what i want
myob.to_h #=> {foo: "foo", bar: nil}
# so i can
myob.to_h.merge(baz: "baz"}.to_json
我没有发现任何能给我一个相似表现的东西,所以如果你知道我喜欢听到的神奇的api酱。 谢谢!
答案 0 :(得分:1)
你可以像这样低效率地破解它:
class MyOb
def to_h
JSON.parse(self.to_json)
end
end
[编辑] 或者您可以这样做,这样您就不必在多个地方跟踪密钥:
class MyOb
def to_h
Hash[MyOb.redis_objects.map { |k,_| [k, self.send(k)] }]
end
end
答案 1 :(得分:0)
require 'json'
class MyOb
include Redis::Objects
value :foo
value :bar
def to_h
JSON.parse(self.to_json)
end
end