我是Ruby的新手,我正在以如下方式运行Open3.popen3()
命令:
_, stdout, stderr, wait_thr = Open3.popen3("<command>")
raise "<command> failed: #{stderr.read}" if wait_thr.value != 0
预期的stdout(stdout.read
)遵循下一个结构(注意数组的元素数量可以变化):
Some log line of plain text:
[{'foo': 'bar', 'fooz': '1'}, {'spam': 'ham', 'eggs': '5'}]
当我读取stdout时,它返回一个String,这当然是预期的类,但我想稍微处理一下,以便能够将其转换/解析为JSON。我尝试的是:
list = stdout.read.sub! 'Some log line of plain text:', ''
JSON.parse(list)
但它不起作用:
/Library/Ruby/Gems/2.6.0/gems/json-2.6.1/lib/json/common.rb:216:in `parse': 451: unexpected token at '{'foo': 'bar', 'fooz': '1'}, {'spam': 'ham', 'eggs': '5'}]' (JSON::ParserError)
有没有一种方法可以做到这一点,是不是太hacky?TIA!
1条答案
按热度按时间ovfsdjhp1#
好吧,我找到了一个方法:
不知道这是不是最好的方法,但对我来说已经足够好了!