シェルスクリプトでJSONをきれいに印刷するにはどうすればいいですか? 質問する

シェルスクリプトでJSONをきれいに印刷するにはどうすればいいですか? 質問する

JSON を人間が読める形式でフォーマットする (Unix) シェル スクリプトはありますか?

基本的には、次のものを変換します。

{ "foo": "lorem", "bar": "ipsum" }

... 次のようなものに変換します:

{
    "foo": "lorem",
    "bar": "ipsum"
}

ベストアンサー1

Python 2.6以降または3では、json.ツールモジュール:

echo '{"foo": "lorem", "bar": "ipsum"}' | python -m json.tool

または、JSON がファイル内にある場合は、次のように実行できます。

python -m json.tool my_json.json

JSONがAPIなどのインターネットソースからのものである場合は、

curl http://my_url/ | python -m json.tool

これらすべてのケースで便宜上、エイリアスを作成できます。

alias prettyjson='python -m json.tool'

もう少し入力するだけで準備ができるので、さらに便利です。

prettyjson_s() {
    echo "$1" | python -m json.tool
}

prettyjson_f() {
    python -m json.tool "$1"
}

prettyjson_w() {
    curl "$1" | python -m json.tool
}

上記のすべてのケースで、これを に入れる.bashrcと、シェルでいつでも利用できるようになります。 のように呼び出しますprettyjson_s '{"foo": "lorem", "bar": "ipsum"}'

注意してください@pnd指摘されたコメント下記のように、Python 3.5以降ではJSONオブジェクトはデフォルトでソートされなくなりました。ソートするには、--sort-keysフラグを最後まで。つまり... | python -m json.tool --sort-keys

もう一つの便利な選択肢は--no-ensure-ascii非 ASCII 文字のエスケープを無効にします (バージョン 3.9 の新機能)。

おすすめ記事