Ruby – 如何在Ruby on Rails中“漂亮”格式化我的JSON输出?

我希望Ruby on Rails中的JSON输出“漂亮”或格式良好。

现在,我打电话to_json,我的JSON全部在一条线上。有时,如果JSON输出流中存在问题,则很难看到。

有没有办法配置或方法使我的JSON在Rails中“漂亮”或格式良好?


使用pretty_generate()内置于更高版本的JSON中的函数。例如:

require 'json'
my_object = { :array => [1, 2, 3, { :sample => "hash"} ], :foo => "bar" }
puts JSON.pretty_generate(my_object)

哪个让你:

{
  "array": [
    1,
    2,
    3,
    {
      "sample": "hash"
    }
  ],
  "foo": "bar"
}

感谢Rack Middleware和Rails 3,您可以为每个请求输出漂亮的JSON,而无需更改应用程序的任何控制器。我已经写了这样的中间件片段,我在浏览器和curl输出中得到了很好的印刷JSON 。

class PrettyJsonResponse
  def initialize(app)
    @app = app
  end

  def call(env)
    status, headers, response = @app.call(env)
    if headers["Content-Type"] =~ /^application\/json/
      obj = JSON.parse(response.body)
      pretty_str = JSON.pretty_unparse(obj)
      response = [pretty_str]
      headers["Content-Length"] = pretty_str.bytesize.to_s
    end
    [status, headers, response]
  end
end

上面的代码应该放在app/middleware/pretty_json_response.rb你的Rails项目中。最后一步是将中间件注册到config/environments/development.rb

config.middleware.use PrettyJsonResponse

我不建议使用它production.rb。JSON重新分析可能会降低生产应用程序的响应时间和吞吐量。最终可能引入额外的逻辑,例如’X-Pretty-Json:true’标题,以按需触发手动卷曲请求的格式化。

(使用Rails 3.2.8-5.0.0,Ruby 1.9.3-2.2.0,Linux测试)


<pre>与HTML一起使用的标记JSON.pretty_generate将在您的视图中呈现JSON。当我的杰出老板告诉我这件事时,我很高兴:

<% if !@data.blank? %>
   <pre><%= JSON.pretty_generate(@data) %></pre>
<% end %>

添加评论

友情链接:蝴蝶教程