概要
コマンドラインからではなく Python プログラム内で jq を使う方法を紹介します
環境
- macOS 14.2
- Python 3.11.6
-
jq.py 1.6.0
サンプルコード
import jq
# キーを指定して値を参照
a = {"name": "hawk", "age": 10}
print(jq.compile(".name").input_value(a).first())
# 配列をループして順番に参照
a = {"langs": ["ruby", "python", "javascript", "swift"]}
for lang in jq.compile(".langs[]").input_value(a):
print(lang)
# 配列の長さを取得
a = {"langs": ["ruby", "python", "javascript", "swift", "elisp"]}
print(len(jq.compile(".langs[]").input_value(a).all()))
# all や first は参照した値の型を適切に返すが text は文字列として返す
print(type(jq.compile(".langs[]").input_value(a).all()))
print(type(jq.compile(".langs").input_value(a).text()))
上記をコマンドでやった場合
echo '{"name": "hawk", "age": 10}' | jq .name
echo '{"langs": ["ruby", "python", "javascript", "swift"]}' | jq '.langs[]'
echo '{"langs": ["ruby", "python", "javascript", "swift", "elisp"]}' | jq '.langs | length'
最後に
JSON のパースだけであれば Python デフォルトの json モジュールを使ってもできますが dict を直接扱うのが嫌な場合や複雑な場合には jq.py を使うことできれいに書けることがあるかもしれません
0 件のコメント:
コメントを投稿