シェル スクリプトでの JSON のプリティ プリント

Abdullah Bukhari 2023年6月20日
シェル スクリプトでの JSON のプリティ プリント

JSON は、JavaScript オブジェクト リテラルと配列をスカラー データと一緒に表現するためのテキスト アプローチです。 読み書きが比較的簡単で、ソフトウェアが 解析 してスポーンするのがより簡単です。

JSON は、構造化されたデータをシリアル化し、ネットワーク経由で (通常はサーバーと Web アプリケーション間で) 交換するためによく使用されます。

シェル スクリプトでの JSON のプリティ プリント

JSON を操作しているときに、その出力をより人間が理解できる形式にしたい場合があります。 以下の JSON オブジェクトを検討してください。

{"name": "Ali", "rollno": 123, "fathername": "Muhammad", "mothername": "Qimra", "semester": 5, "roomno": "b-12", }

上記の JSON オブジェクトの属性を理解することは、属性が 10 個にも満たない場合でも十分に困難です。したがって、属性が数百個ある場合、それがどのような悪夢になるか想像してみてください。

したがって、以下の JSON 属性のように、より人間にわかりやすい形式にフォーマットすることが重要です。

{"name": "Ali",
"rollno": 123,
"fathername": "Muhammad",
"mothername": "Qimra",
"semester": 5,
"roomno": "b-12"}

どれだけきれいに見えるかに注目してください。 上記を実現するために、さまざまな方法を試してみましょう。

Python 2.6 以降では、以下を使用できます。

echo '{"key1": "val1", "keyn": "valn"}' | python -m json.tool
# or use
echo '{"key1": "val1", "keyn": "valn"}' | python2 -m json.tool
# or use
echo '{"key1": "val1", "keyn": "valn"}' | python3 -m json.tool

出力は次のようになります。

{
    "key1": "val1",
    "keyn": "valn"
}

ただし、Python、Python2、または Python3 をインストールしていない場合は、次のいずれかのエラーが発生します。

Command 'python' not found
Command 'python2' not found
Command 'python3' not found

このエラーを回避するには、次のコマンドを使用します。

sudo apt install python python2 python3

別の方法として、JSON オブジェクトを JSON ファイルに保存している場合は、次のコマンドを実行します。

python -m json.tool <path to json file>.json

念のため、JSON が API などのインターネット ソースからのものである場合は、次を使用します。

curl <url> | python -m json.tool

上記を達成するための他の方法を見ていきます。

次の構造のファイル my_json.json があるとします。

{ "key1": "val1", " keyn": "valn" }

ファイルがそこにあるため、現在のディレクトリを指定するために (.) を使用していることに注意してください。

sudo jq . my_json.json | less –R

jq '.key1' <<< '{ "key1": "val1", " keyn": "valn" }'

cat my_json.json| jq .

echo '{ "key1": "val1", " keyn": "valn" }' | npx json

jq を使用するには、以下のコマンドを使用してインストールする必要があります。

sudo apt install jq

1 番目、3 番目 (パイプを使用してデータをファイル my_json.json からプロセス jq に転送する)、および 4 番目のメソッドの出力は次のとおりです。

{
    "key1": "val1",
    "keyn": "valn"
}

4 番目のメソッドには npx の依存関係が必要ですが、そのコマンドを実行しても心配する必要はありません。 npx がまだインストールされていない場合は、自動的にインストールされます。

2 番目のメソッドは、JSON オブジェクトを定義し、キー key1 値を出力します。 以下はその出力です。

"val1"

Python の json.toolpigmentize を組み合わせて、JSON オブジェクトをきれいに出力することもできます。 以下のコマンドを検討してください。

echo '{ "key1": "val1", " keyn": "valn" }' | python -m json.tool | pygmentize –g

上記のコマンドの出力は次のとおりです。

{
    "key1": "val1",
    "keyn": "valn"
}

ただし、上記のコマンドを使用するには、pigmentize をインストールする必要があります。 pigmentize をインストールするには、次のコマンドを使用します。

sudo apt install python3-pygments

関連記事 - Bash Json