Ruby on rails 使用Ruby创建包含其他对象数组的一个对象的JSON字符串的最佳实践?
创建一个包含对象数组(类B对象)的对象(类a对象)的JSON字符串的好做法是什么?我对类的Ato_json方法的实现特别感兴趣 假设A类如下所示:Ruby on rails 使用Ruby创建包含其他对象数组的一个对象的JSON字符串的最佳实践?,ruby-on-rails,ruby,json,Ruby On Rails,Ruby,Json,创建一个包含对象数组(类B对象)的对象(类a对象)的JSON字符串的好做法是什么?我对类的Ato_json方法的实现特别感兴趣 假设A类如下所示: class A attr_accessor :items def initialize() @items = Array.new end def to_json(*a) ?SECRET OF THE DAY? end end B类: class B def to_json(*a) {"class B"
class A
attr_accessor :items
def initialize()
@items = Array.new
end
def to_json(*a)
?SECRET OF THE DAY?
end
end
B类:
class B
def to_json(*a)
{"class B" => "class B"}.to_json(*a)
end
end
到目前为止,我得到的最佳解决方案是:
def to_json(*a)
json = Array.new
@items.each do |item|
json << item.to_json(*a)
end
{"class A" => json}.to_json(*a)
end
def to_json(*a)
json=Array.new
@项目。每个do |项目|
json}.to_json(*a)
结束
假设A类对象的数组中只有一个项,则生成的JSON字符串如下所示:
class A
attr_accessor :items
def initialize()
@items = Array.new
end
def to_json(*a)
?SECRET OF THE DAY?
end
end
{“A类”:[“{\”B类\“:\“B类\”}]
我相信我们可以做得更好?我会这样做
def to_json(*a)
{"class A" => @items}.to_json(*a)
end
这种方法的问题在于
@items
数组包含字符串,而不是对象。在这种情况下,您的to_json将创建字符串数组,而不是对象数组。重新安装/升级json/json_pure至1.5.1最终解决了IOError异常问题
使用:
Rails 3.0.3
ruby 1.9.2p136(2010-12-25修订版30365)[i386-darwin9.8.0]
json 1.5.1
json_pure 1.5.1
请参阅以获取进一步的指导…我以前尝试过这个方法,它会导致类A中出现IOError异常,并告诉_json“未打开阅读”。。。