Предварительно подтвердите данные JSON, используя Ruby на терминале - PullRequest
2 голосов
/ 02 февраля 2012

Ранее я использовал 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

Это много для небольшой команды оболочки.Можете ли вы предложить лучший способ?

Ответы [ 3 ]

1 голос
/ 02 февраля 2012

Вы можете сократить свой сценарий:

# 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).

0 голосов
/ 09 сентября 2016

Вы также можете использовать гем awesome_print.

  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. Используйте вашу функцию, чтобы получить симпатичный JSON в вашем терминале Linux:

    jcurl http://127.0.0.1:3000/persons/1.json
    
0 голосов
/ 02 февраля 2012

Существует драгоценный камень colour_json , который делает именно это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...