Ruby получает размер в байтах массива
Я хотел бы получить размер в байтах содержимого массива (элементов) в ruby.
Я заполняю свой массив следующим образом:
@records.each do |record|
items << { :table => table, :id => record.id, :lruos => record.updated_at }
end
На самом деле, я хочу принудительно отправить Content-Length этого массива, когда я сериализую его в JSON:
respond_to do |format|
#response['Content-Length'] = items.to_s.size
format.json { render :json => { :success => "OK", :items => items } }
end
Поэтому любая идея сделать это может быть интересной.
(по какой-то причине я не знаю, что длина контента не отправлена, поэтому я хочу ее принудительно)
Я использую Rails 3.0.5.
Ответы
Ответ 1
Как и WTP, вы, вероятно, намерены вернуть размер представления JSON вместо рубинового представления массива, поскольку JSON является фактическим ответом на браузер. Вы можете сделать это, предварительно закодировав (получив строку), а затем проверив его размер.
response['Content-Length'] = ActiveSupport::JSON.encode(items).size
Подробнее о сериализации и рельсах JSON
Ответ 2
Для тех, кому все еще интересно - я нашел, что это работает
ActiveSupport::JSON.encode(items).size.to_s
Который в течение многих лет спустя может кому-то помочь.