2013-02-26 4 views
6

Ich benutze .json.erb Ansichten statt to_json Methode aufrufen.Wie wird die JSON-Ausgabe in Rails minimiert?

Ich habe mehrere Hinweise zur JSON-Ausgabe-Verkleinerung gefunden. Die einen sagen, dass alle Ausgaben der Webanwendung gezippt werden sollen, andere empfehlen die Verwendung von after filter oder before render, aber sie erklären nicht, wie Leerzeichen und Tabs zwischen JSON-Elementen verkleinert werden und wo JSON-Eingaben vorgenommen werden und wo das minimierte Ergebnis abgelegt wird. Die dritten Ratschläge sprechen streng von der Minimierung von JavaScript.

Antwort

4

Der einfachste Weg besteht darin, Ruby dazu zu bringen, die gesamte Antwort zu analysieren und sie mit einem after_filter wieder auszuspucken. Versuchen Sie den folgenden Code in 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 

Wenn Sie sich entscheiden, dass Sie die JSON statt minimierte verschönert möchten, können Sie diesen Code verwenden:

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 

Oder Sie der Anforderer mit einem Parameter bestimmen ermöglichen:

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