【问题标题】:How to minify JSON output in Rails?如何在 Rails 中缩小 JSON 输出?
【发布时间】:2013-02-26 17:01:38
【问题描述】:

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

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

【问题讨论】:

    标签: ruby-on-rails views minify


    【解决方案1】:

    最简单的方法是让 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
    

    【讨论】:

      猜你喜欢
      • 2021-12-27
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 2013-11-18
      • 2014-04-08
      • 2012-06-15
      • 1970-01-01
      • 2013-01-28
      相关资源
      最近更新 更多