Ruby解析JSON而不打印结果

Ruby解析JSON而不打印结果,ruby,json,parsing,Ruby,Json,Parsing,我正在将文件input.json解析为如下所示的散列 input_object = JSON.parse(File.read('input.json')) 当我在irb或运行ruby script.rb中运行脚本时,我运行脚本的终端开始打印对象。这通常不是问题,但是input.json是一个大文件,打印可能需要10~20分钟。有没有一种方法可以让我默默地做这件事 更新:即使使用irb_context.echo=false,它也会打印。这意味着设置input\u object=对象未被打印。Ru

我正在将文件
input.json
解析为如下所示的散列

input_object = JSON.parse(File.read('input.json'))
当我在irb或运行
ruby script.rb
中运行脚本时,我运行脚本的终端开始打印对象。这通常不是问题,但是
input.json
是一个大文件,打印可能需要10~20分钟。有没有一种方法可以让我默默地做这件事


更新:即使使用
irb_context.echo=false,它也会打印。这意味着设置
input\u object=
对象未被打印。

Ruby显示结果,这就是IRB打印json的原因

有一个典型的Ruby IRB习惯用法可以附加任何短项,如下所示:

input_object = JSON.parse(File.read('input.json')); 0
附加的0使IRB打印0而不是长json

对于您的脚本,它可能正在打印JSON,因为JSON解析器遇到错误,您看到的是异常调试消息

尝试包装分析:

begin
  input_object = JSON.parse(File.read('input.json'))
rescue
  raise "JSON parse error!"
end
它仍然打印JSON吗

如果是,请尝试使脚本可执行:

chmod u+x script.rb
  • 将脚本的第一行设置为:

    #!/usr/bin/env ruby
    
  • 最后一行是:

    exit 0
    
  • 使其可执行:

    chmod u+x script.rb
    
  • 运行它:

    ./script.rb
    

  • 它仍然打印JSON吗?

    除非您在irb中,否则您那里没有任何东西应该打印到标准输出。我将它添加到
    script.rb
    ,然后运行
    ruby script.rb
    ,并在终端中打印。我使用的是ruby 2.1.2。你能测试一下更小的、绝对有效的json文件吗?例如test.json{“test”:123}?谢谢@JariOtranen!我想就是这样。经过测试,脚本运行安静。很明显,它甚至在irb之外打印