JMESPathのターミナル探索ツール「jmespath.terminal」

2016.07.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

小ネタです。

最近弊社でも関連エントリが増えて来た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_01

任意のファイルを作成し、そのファイルをパースしてみましょう。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の検索条件指定文字列を打ち込んで行くと以下の様に結果がその場で分かるような出力となりました。

jmespath_022

勿論、AWS CLIとの併用も可能です。以下の様な形でAWS CLIの出力結果(JSON)をjptermに渡す事により、

$ aws ec2 describe-security-groups --region us-west-1 | jpterm

AWS CLIの結果をJMESPathでパースする事が出来る様になります。画面を抜ける際は[F5]若しくは[Ctrl+C]で可能です。

jmespath_03

というわけで、JMESPathのターミナル用探索ツール「jmespath.terminal」のご紹介でした。この手のツールはJSONから目的の要素・情報を以下にスムーズに取得出来るかが鍵となります。試行錯誤する時間をこのツールで短縮出来ると開発や運用の手間もだいぶ削減出来そうですね。JMESPathについては公式含め以下の情報源等をご参考にしてみてください。こちらからは以上です。

参考情報: