如何在 Ruby 中将对象序列化为 json
Posted
技术标签:
【中文标题】如何在 Ruby 中将对象序列化为 json【英文标题】:How to Serialize Object to json in Ruby 【发布时间】:2013-03-05 13:03:30 【问题描述】:我正在学习 Ruby,想知道如何将 ruby 对象序列化为 json。我很喜欢使用 ActiveSupport 或任何其他 gem,最好的方法是什么?以下方法不起作用并失败
BinaryTree.rb:4:in `require': no such file to load -- json (LoadError)
我的问题是,我应该安装什么以及需要使用什么 require 语句?
#!/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
【问题讨论】:
看到这个:***.com/questions/4569329/… 和 ***.com/questions/4464050/… 【参考方案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
【讨论】:
我想我有,但也许它没有被发现?我需要将包含类型的参数传递给解释器吗?$ sudo gem install json Building native extensions. This could take a while... Successfully installed json-1.7.7 1 gem installed Installing ri documentation for json-1.7.7... Installing RDoc documentation for json-1.7.7... $ ruby BinaryTree.rb BinaryTree.rb:4:in
require':没有要加载的文件——来自 BinaryTree.rb:4 的 json (LoadError) `
哦,您使用的是 Ruby 1.8 吗?如果是这样,您需要先手动require 'rubygems'
并致电gem 'json'
。我已经用详细信息更新了我的答案。以上是关于如何在 Ruby 中将对象序列化为 json的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Jackson 中将对象序列化为 ObjectNode 的值?
如何在 .NET Core 中将 JSON 序列化为没有转义字符的字符串?
将 JSON 反序列化为 C# 对象以在网格中将嵌套数组显示为字符串