シェル スクリプトでの 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.tool
と pigmentize
を組み合わせて、JSON オブジェクトをきれいに出力することもできます。 以下のコマンドを検討してください。
echo '{ "key1": "val1", " keyn": "valn" }' | python -m json.tool | pygmentize –g
上記のコマンドの出力は次のとおりです。
{
"key1": "val1",
"keyn": "valn"
}
ただし、上記のコマンドを使用するには、pigmentize
をインストールする必要があります。 pigmentize
をインストールするには、次のコマンドを使用します。
sudo apt install python3-pygments