sir*_*cco 4 ruby serialization json
我想将一个对象序列化为JSON,将其写入文件并将其读回.现在我希望在.net中你有json.net之类的东西,你可以这样做:
JsonSerializer.Serialize(obj);
Run Code Online (Sandbox Code Playgroud)
并完成它.你得到了JSON字符串.
我如何在Ruby中执行此操作?没有Rails,没有ActiveRecord,没有任何东西.有没有找不到的宝石?
我安装了JSON gem并调用:
puts JSON.generate([obj])
Run Code Online (Sandbox Code Playgroud)
其中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))
Run Code Online (Sandbox Code Playgroud)
我得到的全部是:
["#<CrawlStep:0x00000001270d70>"]
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
sar*_*dne 14
最简单的方法是制作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
Run Code Online (Sandbox Code Playgroud)
然后通过调用JSON.dump(obj)和反序列化来序列化JSON.parse(obj).散列的数据部分to_json可以是任何东西,但我喜欢将它保留到new/ initialize将获得的参数.如果还有其他需要保存的东西,你应该把它放在这里,并以某种方式将其解析并设置json_create.
| 归档时间: |
|
| 查看次数: |
6007 次 |
| 最近记录: |