6

我正在使用 .json.erb 视图而不是调用 to_json 方法。

我发现了一些关于 JSON 输出缩小的建议。一些讲述压缩 Web 应用程序的所有输出,其他人建议使用,after filter或者before render但他们没有解释如何缩小 JSON 元素之间的空格和制表符,以及从哪里获取 JSON 输入以及将缩小结果放在哪里。第三个建议严格说明了缩小 JavaScript。

4

1 回答 1

5

最简单的方法是让 Ruby 解析整个响应并使用after_filter. 试试下面的代码app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  after_filter :minify_json

  private

  def minify_json
    response.body = JSON.parse(response.body).to_json if request.format.json?
  end
end

如果您决定要美化 JSON 而不是缩小 JSON,可以使用以下代码:

class ApplicationController < ActionController::Base
  after_filter :beautify_json

  private

  def beautify_json
    response.body = JSON.pretty_generate(JSON.parse(response.body)) if request.format.json?
  end
end

或者,您可以允许请求者使用参数指定:

class ApplicationController < ActionController::Base
  after_filter :format_json

  private

  def format_json
    if request.format.json?
      json = JSON.parse(response.body)
      response.body = params[:pretty] ? JSON.pretty_generate(json) : json.to_json
    end
  end
end
于 2013-06-02T12:23:36.160 回答