我正在学习Ruby,我想知道如何将ruby对象序列化为json。我很酷使用ActiveSupport或任何其他宝石,最好的方法是什么?以下方法不起作用,
失败BinaryTree.rb:4:in `require': no such file to load -- json (LoadError)
我的问题是,我需要安装什么以及需要使用哪些声明?
#!/usr/bin/env ruby
require 'pp'
require 'json'
class BinaryTree
attr_accessor :key, :value, :left, :right
def initialize(key=nil,value=nil, left=nil, right=nil)
@key, @value, @left, @right = key, value, left, right
end
def insert(key,value)
if @key.nil?
@key = key
return @value = value
end
if key == @key
return @value = value
end
if key > @key
if @right.nil?
@right = BinaryTree.new
end
return @right.insert(key, value)
end
if @left.nil?
@left = BinaryTree.new
end
return @left.insert(key, value)
end
end
if __FILE__ == $0
bt = BinaryTree.new
bt.insert(5,2)
bt.insert(4,5)
bt.insert(6,3)
bt.insert(9,7)
bt.insert(8,9)
pp bt
puts JSON.encode(bt)
end
答案 0 :(得分:1)
您是否安装了json
gem?如果没有,您需要先确保使用gem install json
安装它。安装完成后,您应该可以执行以下操作:
File.open('output_file', 'w') do |f|
f.write(JSON.encode(bt))
end
将File.open
API与块一起使用很方便,因为之后它将#close
文件实例。
<强>更新强>
如果您使用的是Ruby 1.8或更早版本,则必须先使用以下命令设置Rubygems:
require 'rubygems'
gem 'json'
require 'json'
puts ['test'].to_json