LoginSignup
3
5

More than 3 years have passed since last update.

JMESPathを使ってJSONをパースするときにPython製ツールjmespath-terminalが便利だった

Posted at

はじめに

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

jmespath.gif

  • control + cで閉じます。閉じた後に、何をoutputするかはcontrol + pで変更できます。
    1. quit : 何も表示しません。
    2. result : JMESPathをかけた結果を表示します。e.g.) one
    3. expression: 入力したJMESPathを表示します。 e.g.) foo.bar.name jmes-toggle.gif

jmespath

jmespath · PyPI

  • こちらはjqと同じ用に使えます。
  • 自分は試してませんが、pythonとしてデータ構造をパースするコードも普通に書けるようです(リンク先).

インストール

pip install jmespath
$ echo '{"foo": {"bar": {"name": "one"}, "baz": {"name": "two"}}}' | jp.py foo.bar.name

"one"

公式資料

その他感想

AWS CLIの --queryオプションをなるべく使いこなしたい...ので、JMESPathに普段から慣れておきたいな、と思っています。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5