我之前使用Python来完成JSON数据的输出,如下所示:
python -mjson.tool input.json
我希望使用Ruby获得类似的输出。我是这样做的:
ruby -rrubygems -e 'require "json"; ARGV.each { |f| print JSON.pretty_generate(JSON.load(File.open(f))) }' input.json
这对于小型shell命令来说很重要。你能建议一个更好的方法吗?
答案 0 :(得分:1)
您可以缩短脚本:
# ruby 1.9.2
ruby -rjson -e 'ARGF.each(nil) {|f| puts JSON.pretty_generate(JSON.parse(f)) }' file1 file2
# ruby 1.8.7
ruby -rubygems -e 'require "json"; ARGF.each(nil) {|f| puts JSON.pretty_generate(JSON.parse(f)) }' file1 file2
ARGF是一个专为在处理给定文件的脚本中使用而设计的流 作为命令行参数或通过STDIN传入。
我将nil
传递给ARGF#each
方法,以便按文件分割ARGF
,而不是按行(#each
的默认行为)。
答案 1 :(得分:0)
有一个宝石colorful_json正是如此。
答案 2 :(得分:0)
您也可以使用awesome_print gem。
创建一个Bash函数,它将充当快捷方式
function jcurl { curl -s $* | ruby -rawesome_print -rjson -e 'ap JSON.parse(STDIN.read)'; }; export -f jcurl
使用您的函数在Linux终端中获取漂亮的JSON:
jcurl http://127.0.0.1:3000/persons/1.json