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 の新機能)。