如何在Rails中缩小JSON输出?

Pau*_*aul 6 views ruby-on-rails minify

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

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

Aly*_*oss 5

最简单的方法就是让Ruby解析整个响应并使用a再次将其吐出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
Run Code Online (Sandbox Code Playgroud)

如果您决定要将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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)