Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Ruby创建包含其他对象数组的一个对象的JSON字符串的最佳实践?_Ruby On Rails_Ruby_Json - Fatal编程技术网

Ruby on rails 使用Ruby创建包含其他对象数组的一个对象的JSON字符串的最佳实践?

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"

创建一个包含对象数组(类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 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“未打开阅读”。。。