Ruby获取数组的字节大小

时间:2012-02-11 09:28:41

标签: ruby arrays

我想获取ruby中数组(项)内容的字节大小。

我这样填充我的数组:

  @records.each do |record|
    items << { :table => table, :id => record.id, :lruos => record.updated_at }
  end

事实上,当我在JSON中序列化时,我想强制发送此数组的Content-Length:

respond_to do |format|
  #response['Content-Length'] = items.to_s.size
  format.json { render :json => { :success => "OK", :items => items } }
end

所以任何想法都可能很有趣。 (因为我不知道内容长度没有发送,所以我想强制它)

我使用Rails 3.0.5。

3 个答案:

答案 0 :(得分:7)

就像WTP所说,你可能打算返回JSON表示的大小而不是数组的ruby表示,因为JSON是对浏览器的实际响应。您可以通过预先编码(生成一个字符串)然后检查其大小来完成此操作。

response['Content-Length'] = ActiveSupport::JSON.encode(items).size

More about JSON serialization and rails

答案 1 :(得分:1)

对于那些仍在疑惑的人 - 我发现这个工作

ActiveSupport::JSON.encode(items).size.to_s

虽然多年以后 - 可以帮助某人。

答案 2 :(得分:0)

或者,您也可以通过item.to_json.bytesize执行此操作。这将为您提供正在发送的JSON字符串的大小。