在终端上使用Ruby来优化JSON数据

时间:2012-02-02 09:39:25

标签: ruby json

我之前使用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命令来说很重要。你能建议一个更好的方法吗?

3 个答案:

答案 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。

  1. 使用以下命令安装:gem install awesome_print
  2. 创建一个Bash函数,它将充当快捷方式

    function jcurl { curl -s $* | ruby -rawesome_print -rjson -e 'ap JSON.parse(STDIN.read)'; }; export -f jcurl
    
  3. 使用您的函数在Linux终端中获取漂亮的JSON:

    jcurl http://127.0.0.1:3000/persons/1.json