我想获取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。
答案 0 :(得分:7)
就像WTP所说,你可能打算返回JSON表示的大小而不是数组的ruby表示,因为JSON是对浏览器的实际响应。您可以通过预先编码(生成一个字符串)然后检查其大小来完成此操作。
response['Content-Length'] = ActiveSupport::JSON.encode(items).size
答案 1 :(得分:1)
对于那些仍在疑惑的人 - 我发现这个工作
ActiveSupport::JSON.encode(items).size.to_s
虽然多年以后 - 可以帮助某人。
答案 2 :(得分:0)
或者,您也可以通过item.to_json.bytesize
执行此操作。这将为您提供正在发送的JSON字符串的大小。