在Rails 3.2.8中使用jbuilder模板生成的Pretty Print JSON

问题描述:

有人有办法漂亮地打印jbuilder的JSON输出吗?

Anyone have a way to pretty print JSON output from jbuilder?

我可以使用以下类似的命令漂亮地打印控制器动作中生成的JSON:

I can pretty print JSON generated within a controller action with something like:

JSON.pretty_generate(some_json_object) 

但是一旦我使用了jbuilder模板,我就不知道一种可以漂亮地打印输出的方法.

but once I pass off to a jbuilder template, I'm not aware of a way to have that output pretty printed.

现在,我的操作方法的render语句很简单:

Right now, my action method's render statement is simple:

render formats: :json    

无论指定哪种输入格式类型(这都是我所希望的行为),这都能成功地强制使用jbuilder进行渲染.

And this successfully forces a rendering with jbuilder, regardless of input format type specified (which is my desired behavior).

我认为这很简单

@package = Package.first

json = JSON.parse(@blog.to_json)

PP.pp(json)

{"id_to_s"=>"5222675dbc11149e3a000002",
 "title"=>"Package Title",
 "version"=>"0.1.1",
 "comment"=>
  {"user"=>"Joe",
   "description"=>"Joe's comment"},
 "assets"=>
  [{"id_to_s"=>"522a4620fa451436f4000001",
    "_type"=>"Illustration",
    "start"=>0,
    "stop"=>100,
    "caption"=>"mountain climbing"},
   {"id_to_s"=>"522a56a6fa4514523a000001",
    "_type"=>"Illustration",
    "start"=>200,
    "stop"=>300,
    "caption"=>"airport"},
   {"id_to_s"=>"522a6a0ffa4514a30e000002",
    "_type"=>"Illustration",
    "start"=>400,
    "stop"=>600,
    "caption"=>"doc"},
   {"id_to_s"=>"522aa46bbc1114551f000001",
    "_type"=>"Illustration",
    "start"=>nil,
    "stop"=>nil,
    "caption"=>nil},
   {"id_to_s"=>"522aa47fbc1114551f000002",
    "_type"=>"Illustration",
    "start"=>10,
    "stop"=>30,
    "caption"=>"asdflkjsd"}]}

或者,更快的单线

PP.pp JSON.parse Blog.first.to_json