将Ruby对象序列化为JSON并返回?
我想将一个对象序列化为JSON,将其写入文件并将其读回。 现在我希望在.net中你有json.net之类的东西,你可以这样做:
JsonSerializer.Serialize(obj);
并完成它。 你得到了JSON字符串。
我如何在Ruby中执行此操作? 没有Rails,没有ActiveRecord,没有任何东西。 有没有找不到的gem?
我安装了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))
我得到的全部是:
["#"]
我究竟做错了什么?
最简单的方法是创建一个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
设置它。