我想将一个对象序列化为 JSON,将其写入文件并读回。现在我希望在 .net 中有类似的东西,你有 json.net 或类似的东西,然后你会这样做:
JsonSerializer.Serialize(obj);
并完成它。您将返回 JSON 字符串。
我如何在 Ruby 中执行此操作?没有 Rails,没有 ActiveRecord,什么都没有。有什么宝石我找不到吗?
我安装了 JSON gem 并调用:
puts JSON.generate([obj])
其中 obj 是一个对象,例如:
class CrawlStep
attr_accessor :id, :name, :next_step
def initialize (id, name, next_step)
@id = id
@name = name
@next_step = next_step
end
end
obj = CrawlStep.new(1, 'step 1', CrawlStep.new(2, 'step 2', nil))
我得到的只是:
["#<CrawlStep:0x00000001270d70>"]
我究竟做错了什么?
最简单的方法是制作一个to_json
方法和一个json_create
方法。对于您的情况,您可以这样做:
class CrawlStep
# Insert your code here (attr_accessor and initialize)
def self.json_create(o)
new(*o['data'])
end
def to_json(*a)
{ 'json_class' => self.class.name, 'data' => [id, name, next_step] }.to_json(*a)
end
end
然后你通过调用序列化JSON.dump(obj)
并反序列化JSON.parse(obj)
。哈希值的数据部分to_json
可以是任何东西,但我喜欢将其保留为以下参数new
/initialize
会得到。如果您需要保存其他内容,则应该将其放在这里并以某种方式解析它并将其设置在json_create
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)