将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设置它。