漂亮地将在 Ruby 中创建的 JSON 对象打印到 Chrome 浏览器控制台

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

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

在我的 js.erb 文件中,当我打印这个时:

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

我明白了:

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

这很难读。我想让 JSON 更漂亮,这样我可以更轻松地阅读它。

在我的 js.erb 文件中,我试过这个:

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

还有这个:

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

还有这个:

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

但没有任何效果 -- 代码未被评估,也没有任何输出。我做错了什么?

很简单,试试这个

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

扩展 Cba Bhusal 的答案,这对我来说效果最好:

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

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

{
  "id": 138,
  "user_id": null,
  "created_at": "2015-01-04T15:57:23.110Z",
  "updated_at": "2015-01-04T15:57:23.110Z"
  #...
}