有没有办法在使用Oj.dump时指定用于序列化的方法,而不是将其默认为to_json或as_json?
答案 0 :(得分:1)
Oj
没有设置默认方法进行调用的选项,但它会自行序列化调用该方法的结果。
Oj.dump(data.special_as_json)
这也是一个presenter对象的好地方,它实现了你想要的方法to_json
。
class Glove
private attr_reader :obj
def initialize(obj)
@obj = obj
end
def as_json(opts = {})
{
# ...
}
end
end
Oj.dump(Glove.new(data))
由于您似乎试图避免键入Oj.dump
之外的任何内容,因此您可以编写一个包含Oj
的包装器来完成工作。
module Ok
def self.dump(obj)
Oj.dump(obj.special_as_json)
end
end
Ok.dump(data)
当然,monkeypatching Oj
始终是一个选择,但不是一个好选择。
答案 1 :(得分:1)
尝试
Oj.generate({a: 'test'})
my_hash = {a: 'test'}
Oj.dump(my_hash, mode: :compat)