Best way to pretty print a hash
我有一个包含嵌套数组和哈希的大哈希。我只想简单地打印出来,以便用户"可读"。
我希望它有点像"山药"——可读性很好——但看起来还是太科技化了。
最终,它将成为最终用户,他们需要读取这些数据块,这样他们就需要被清晰地格式化。
有什么建议吗?
1 2 | require 'pp' pp my_hash |
如果您需要一个内置的解决方案并且只需要合理的换行,那么就使用
如果可以安装宝石,请使用Awesome_print。(根据用户的不同,您可能希望使用
如果你有json,我推荐
另一个比
1 2 | require 'pry' # must install the gem... but you ALWAYS want pry installed anyways Pry::ColorPrinter.pp(obj) |
如果您没有任何花哨的gem操作,但是有json,那么这个cli行将在哈希上工作:
江户十一〔七〕号
1 2 3 4 5 6 7 8 | #=> { :key1 =>"value1", :key2 =>"value2", :key3 =>"value3" } |
。
如果要打印给用户,请使用上面的答案。
如果你只想在控制台上自己打印,我建议你使用PryGem而不是IRB。除了漂亮的打印,Pry还有很多其他功能(请查看下面的RailsCast)
gem install pry
号
检查一下这条铁路:
http://railscansts.com/ci集/280-pry-with-rails
如果您相信您的密钥是健全的,那么使用JSON很容易:
1 2 3 4 5 6 7 8 9 10 | JSON.pretty_generate(a: 1, 2 => 3, 3 => nil). gsub(": null",": nil"). gsub(/(^\s*)"([a-zA-Z][a-zA-Z\d_]*)":/,"\\1\\2:"). #"foo": 1 -> foo: 1 gsub(/(^\s*)(".*?"):/,"\\1\\2 =>") #"123": 1 ->"123" => 1 { a: 1, "2" => 3, "3" => nil } |
。
在我尝试的所有gem中,
使用pry,只需将以下代码添加到~/.pryrc:
1 2 | require"awesome_print" AwesomePrint.pry! |
号
下面是使用JSON和Rogue的方法:
1 2 3 4 5 6 7 | require 'json' require 'rouge' formatter = Rouge::Formatters::Terminal256.new json_lexer = Rouge::Lexers::JSON.new puts formatter.format(json_lexer.lex(JSON.pretty_generate(JSON.parse(response)))) |
(解析来自例如
在Rails下,Ruby中的数组和散列有内置到JSON函数。我之所以使用JSON,仅仅是因为它在Web浏览器(如Google Chrome)中非常可读。
也就是说,如果您担心它看起来太"技术性"了,那么您应该编写自己的函数,用空格和其他字符替换散列和数组中的大括号和方括号。
查找gsub函数以获得一个非常好的方法。一直玩着不同的字符和不同数量的空白,直到你找到一些吸引人的东西。http://ruby doc.org/core-1.9.3/string.html method-i-gsub