关于javascript:相当打印在Ruby中创建的JSON对象到Chrome浏览器控制台

Pretty print a JSON object created in Ruby to Chrome browser console

我正在将Ruby对象解析为JSON,将其呈现为JS.erb文件,并将其打印到控制台(Chrome浏览器)。

在js.erb文件中,当我打印此文件时:

1
console.log("<%= @search.attributes.to_json %>")

我明白了:

1
{&quot;id&quot;:124,&quot;period_start&quot;:null,&quot;period_end&quot;:null,&quot;user_id&quot;:null,&quot;created_at&quot;:&quot;2015-01-04T05:54:05.133Z&quot;,&quot;updated_at&quot;:&quot;2015-01-04T05:54:05.133Z&quot;,&quot;onscreen_people_rank_lower&quot;:null,&quot;onscreen_people_rank_upper&quot;:null,&quot;incl_onscreen_people_unranked&quot;:null,&quot;offscreen_people_rank_lower&quot;:null,&quot;offscreen_people_rank_upper&quot;:null,&quot;incl_offscreen_people_unranked&quot;:null}

很难读懂。我想让JSON更漂亮,这样我可以更容易地阅读它。

在js.erb文件中,我尝试了以下方法:

1
console.log(eval("(" +"<%= @search.attributes.to_json %>" +")"))

还有这个:

1
console.log( jQuery.parseJSON("<%= @search.attributes.to_json %>") )

还有这个:

1
console.log("<%= JSON.pretty_generate(@search.attributes) %>" )

但是没有工作——代码没有被计算,也没有输出。我做错什么了?


扩大对CBA Bhusal的回答,这对我最有效:

1
console.log("<%= j JSON.pretty_generate(@search.attributes).html_safe %>");

需要escape_javascript来避开引号,而JSON.pretty_generate插入空白以使其更漂亮。Chrome控制台中的输出如下所示:

1
2
3
4
5
6
7
{
 "id": 138,
 "user_id": null,
 "created_at":"2015-01-04T15:57:23.110Z",
 "updated_at":"2015-01-04T15:57:23.110Z"
  #...
}

很简单,试试这个

1
console.log("<%= @search.attributes.to_json.html_safe %>")