はじめに
JMESPathはJSONをパースするためのクエリ言語で、イメージとしてはjqと似たような感じで使えます。例として、AWS CLIの--query
オプションでは、JMESPathを指定します。
JMESPathを利用して、渡したJSONを解析するためのツールもあります。その中でも、クエリの結果が動的に表示されるjmespath-terminalが導入も利用もカンタンでしたので、メモを残そうと思いました。
環境
- macOS Mojave 10.14.6
- シェル: bash
- python3.8
jmespath terminal
GitHub - jmespath/jmespath.terminal: JMESPath exploration tool in the terminal
インストール
pip install jmespath-terminal
使い方
- パイプでJSONを流すと、対話式の画面を開くことができます。
$ echo '{"foo": {"bar": {"name": "one"}, "baz": {"name": "two"}}}' | jpterm
-
control + c
で閉じます。閉じた後に、何をoutputするかはcontrol + p
で変更できます。
jmespath
- こちらはjqと同じ用に使えます。
- 自分は試してませんが、pythonとしてデータ構造をパースするコードも普通に書けるようです(リンク先).
インストール
pip install jmespath
$ echo '{"foo": {"bar": {"name": "one"}, "baz": {"name": "two"}}}' | jp.py foo.bar.name
"one"
公式資料
-
JMESPath — JMESPath
- チュートリアルがめちゃくちゃわかりやすいです。
その他感想
AWS CLIの --query
オプションをなるべく使いこなしたい...ので、JMESPathに普段から慣れておきたいな、と思っています。