JMESPathのターミナル探索ツール「jmespath.terminal」
小ネタです。
最近弊社でも関連エントリが増えて来たJSONパースツール「JMESPath」ですが、昨晩SNSでこのツールをより便利に扱う事の出来るツールが紹介されていたので早速触ってみる事にしました。それがこの「jmespath.terminal」です。
インストールは至ってシンプル。pipで以下の様に関連ライブラリを導入するだけです。(※今回はAmazon Linux EC2を使って試してみました)
$ sudo pip install jmespath-terminal You are using pip version 6.1.1, however version 8.1.2 is available. You should consider upgrading via the 'pip install --upgrade pip' command. Collecting jmespath-terminal Downloading jmespath-terminal-0.2.1.tar.gz Requirement already satisfied (use --upgrade to upgrade): jmespath<=1.0.0,>=0.4.1 in /usr/lib/python2.7/dist-packages (from jmespath-terminal) Collecting Pygments<3.0,>=2.0 (from jmespath-terminal) Downloading Pygments-2.1.3-py2.py3-none-any.whl (755kB) 100% |████████████████████████████████| 757kB 627kB/s Collecting urwid==1.2.2 (from jmespath-terminal) Downloading urwid-1.2.2.tar.gz (585kB) 100% |████████████████████████████████| 585kB 805kB/s Installing collected packages: Pygments, urwid, jmespath-terminal Running setup.py install for urwid Running setup.py install for jmespath-terminal Successfully installed Pygments-2.1.3 jmespath-terminal-0.2.1 urwid-1.2.2 $
ツールはjptermで起動します。
$ jpterm
引数に何も指定しない場合、以下の様な形でサンプルデータが表示されます。
任意のファイルを作成し、そのファイルをパースしてみましょう。JMESPathのチュートリアルサイトで紹介されている以下のデータをローカルに作成してみます。
$ vi location.json $ cat location.json { "locations": [ {"name": "Seattle", "state": "WA"}, {"name": "New York", "state": "NY"}, {"name": "Bellevue", "state": "WA"}, {"name": "Olympia", "state": "WA"} ] } $
jptermコマンドと併せて任意のファイルを指定して起動させると、
$ jpterm location.json
以下の様にファイルをパースする形でツールが起動する様になります。JMESPathの検索条件指定文字列を打ち込んで行くと以下の様に結果がその場で分かるような出力となりました。
勿論、AWS CLIとの併用も可能です。以下の様な形でAWS CLIの出力結果(JSON)をjptermに渡す事により、
$ aws ec2 describe-security-groups --region us-west-1 | jpterm
AWS CLIの結果をJMESPathでパースする事が出来る様になります。画面を抜ける際は[F5]若しくは[Ctrl+C]で可能です。
というわけで、JMESPathのターミナル用探索ツール「jmespath.terminal」のご紹介でした。この手のツールはJSONから目的の要素・情報を以下にスムーズに取得出来るかが鍵となります。試行錯誤する時間をこのツールで短縮出来ると開発や運用の手間もだいぶ削減出来そうですね。JMESPathについては公式含め以下の情報源等をご参考にしてみてください。こちらからは以上です。