我如何“漂亮”在Ruby on Rails中格式化我的JSON输出?
我希望我的Ruby on Rails中的JSON输出为“漂亮”或格式良好。
现在,我打电话给to_json
,我的JSON全部在一行上。 有时候,如果JSON输出流中存在问题,可能很难查看。
有没有办法配置或使我的JSON“漂亮”或良好格式在Rails中的方法?
使用内置于JSON更高版本中的pretty_generate()
函数。 例如:
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
上面的代码应该放在你的Rails项目的app/middleware/pretty_json_response.rb
中。 最后一步是在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测试)
HTML中的<pre>
标记与JSON.pretty_generate
一起JSON.pretty_generate
,将在您的视图中呈现JSON。 当我的杰出老板向我展示这件事时,我感到非常高兴:
<% if !@data.blank? %>
<pre><%= JSON.pretty_generate(@data) %></pre>
<% end %>
链接地址: http://www.djcxy.com/p/1281.html
上一篇: How can I "pretty" format my JSON output in Ruby on Rails?