2013-02-26 56 views
6

我使用.json.erb视图而不是调用to_json方法。如何缩小Rails中的JSON输出?

我发现了几个关于JSON输出缩小的建议。有人告诉我们关于压缩web应用程序的所有输出,其他人建议使用after filterbefore render,但他们没有解释如何在JSON元素之间缩小空格和制表符,以及从哪里接收JSON输入以及从哪里放置缩小的结果。第三条建议严格地讲述了如何缩小JavaScript。

回答

4

最简单的方法是让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,您可以使用此代码:

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