2013-02-26 2 views
6

저는 to_json 메서드를 호출하는 대신 .json.erb 뷰를 사용하고 있습니다.레일스에서 ​​JSON 출력을 축소하는 방법은 무엇입니까?

JSON 출력 축소에 관한 몇 가지 조언을 찾았습니다. 웹 응용 프로그램의 모든 출력을 압축하는 방법에 대해 설명하고 다른 사용자는 after filter 또는 before render을 사용하는 것이 좋지만 JSON 요소 사이의 공백과 탭을 축소하는 방법과 JSON 입력을 가져올 위치와 축소 된 결과를 저장할 위치를 설명하지는 않습니다. 세 번째 조언은 자바 스크립트 축소에 대해 엄격하게 말합니다.

답변

4

가장 쉬운 방법은 Ruby가 전체 응답을 구문 분석하고 after_filter을 사용하여 다시 응답하도록하는 것입니다. app/controllers/application_controller.rb에 다음 코드를 입력하십시오.

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 
: 당신이 요청이 매개 변수를 사용하여 지정할 수 수

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 

또는 : 당신은 당신이 대신 축소 된의 아름답게 json으로 원하는 것을 결정하는 경우

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 

,이 코드를 사용할 수 있습니다

관련 문제