BashでJSONをパースする方法


  1. jqコマンドを使用する方法: jqは、JSONデータをパースおよび抽出するための強力なコマンドラインツールです。

例えば、以下はJSONデータをパースして、特定のフィールドの値を取得する方法です。

json='{"name": "John", "age": 30, "city": "Tokyo"}'
name=$(echo $json | jq -r '.name')
echo $name

上記の例では、jq -r '.name'を使用してnameフィールドの値を取得し、変数nameに格納しています。

  1. Bashの組み込み機能を使用する方法: Bashには、JSONをパースするための組み込みの機能はありませんが、一部のパターンマッチングや文字列操作を使用して、JSONデータを処理することは可能です。

例えば、以下はJSONデータをパースして、特定のフィールドの値を取得する方法です。

json='{"name": "John", "age": 30, "city": "Tokyo"}'
name=${json#*\"name\": \"}    # プレフィックスを削除
name=${name%%\"*}             # サフィックスを削除
echo $name

上記の例では、#*\"name\": \"を使用してnameフィールドのプレフィックスを削除し、%%\"*を使用してサフィックスを削除しています。

  1. Pythonスクリプトを使用する方法: BashではなくPythonを使用してJSONをパースする方法もあります。以下はPythonスクリプトの例です。
import json
json_data = '{"name": "John", "age": 30, "city": "Tokyo"}'
data = json.loads(json_data)
name = data['name']
print(name)

上記の例では、json.loads()関数を使用してJSONデータをパースし、辞書としてアクセスしています。

これらは一部の一般的なJSONパースの方法ですが、実際の使用ケースによって最適な方法が異なる場合もあります。