创建包含对象数组(B类对象)的一个对象(类A的对象)的JSON字符串有什么好的做法?我特别关注类A to_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 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
假设A类对象的数组中只有一个项,则生成的JSON字符串如下所示:
{“A类”:[“{\”B类\“:\”B类“}}”}}
我相信我们可以做得更好吗?
答案 0 :(得分:1)
我会这样做
def to_json(*a)
{"class A" => @items}.to_json(*a)
end
您的方法存在的问题是您的@items
数组包含字符串,而不是对象。在这种情况下,你的to_json将创建一个字符串数组,而不是一个对象数组。
答案 1 :(得分:1)
将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
有关进一步指导,请参阅http://www.ruby-forum.com/topic/1052511#new