Rails to_json为什么时间戳被打破,并被设置为2000-01-01T01:31:35Z



我正在rails中构建一个json对象,如下所示:

@list = Array.new
  @list << {
    :created_at => item.created_at
  }
end
@list.to_json

问题是浏览器收到的是这样的:

"created_at":"2000-01-01T01:31:35Z"

这显然是不对的,在DB中它有:

2011-06-17 01:31:35.057551

为什么会发生这种情况?有什么方法可以确保它正确地进入浏览器?

感谢

您需要进行一些测试/调试,以了解日期的进展情况。对我来说,在Rails控制台(Rails 3.0.9,Ruby 1.9.2)

ruby-1.9.2-p180 :014 > d = Date.parse("2011-06-17 01:31:35.057551")
 => Fri, 17 Jun 2011 
ruby-1.9.2-p180 :015 > @list = {:created_at => d}
 => {:created_at=>Fri, 17 Jun 2011} 
ruby-1.9.2-p180 :016 > @list.to_json
 => "{"created_at":"2011-06-17"}" 

也就是说,一切都很好。你能看看日期是否真的合适吗?

问题在于to_json转义字符的方式。这里有一篇关于这个主题的非常好的帖子:

轨道to_json或as_json

您可能需要研究重写as_json。

相关内容

最新更新