JSON や XML を整形して表示出来るツールをまとめます。
- JSON の整形
- Python の標準ライブラリを使う
- 軽量 JSON パーサー「jq」を使う
- XML の整形
- xmllint を使う
- tidy を使う
- xmlstarlet を使う
JSON を整形する
サンプルファイル
{ "fruits": { "fruit": [
{ "item": "Apple", "price": "100" },
{ "item": "Banana", "price": "200" },
{ "item": "Cherry", "price": "300" }
] } }
Python の標準ライブラリを使う
Python の標準ライブラリを使って JSON を整形することが出来ます。デフォルトで Python がインストールされている環境は多いでしょうから、「事前準備が必要無く、手軽」というメリットがあります。
# cat fruits.json | python -m json.tool
{
"fruits": {
"fruit": [
{
"item": "Apple",
"price": "100"
},
{
"item": "Banana",
"price": "200"
},
{
"item": "Cherry",
"price": "300"
}
]
}
}
軽量 JSON パーサー「jq」を使う
JSON パーサーである「jq」を使うことも出来ます。CentOS であれば yum でインストールします。
yum -y install jq
Ubuntu であれば apt-get でインストールします。
apt-get -y install jq
実行例は以下の通りです。
# cat fruits.json | jq .
{
"fruits": {
"fruit": [
{
"price": "100",
"item": "Apple"
},
{
"price": "200",
"item": "Banana"
},
{
"price": "300",
"item": "Cherry"
}
]
}
}
特定の要素だけを取得することも出来、非常に高機能です。
# cat fruits.json | jq .fruits.fruit[].item
"Apple"
"Banana"
"Cherry"
XML を整形する
サンプルファイル
<?xml version="1.0" encoding="UTF-8"?>
<fruits>
<fruit><item>Apple</item><price>100</price></fruit>
<fruit><item>Banana</item><price>200</price></fruit>
<fruit><item>Cherry</item><price>300</price></fruit>
</fruits>
xmllint を使う
XML は xmllint を使って整形することが出来ます。私の CentOS 環境にはインストール済みでした。Ubuntu であれば apt-get でインストールします。
apt-get -y install libxml2-utils
実行例は以下の通りです。
# xmllint --format fruits.xml
<?xml version="1.0" encoding="UTF-8"?>
<fruits>
<fruit>
<item>Apple</item>
<price>100</price>
</fruit>
<fruit>
<item>Banana</item>
<price>200</price>
</fruit>
<fruit>
<item>Cherry</item>
<price>300</price>
</fruit>
</fruits>
tidy を使う
tidy を使うことも出来ます。CentOS であれば yum でインストールします。
yum -y install tidy
Ubuntu であれば apt-get でインストールします。
apt-get -y install tidy
実行例は以下の通りです。
# tidy --indent-cdata true -xml -utf8 -i fruits.xml
No warnings or errors were found.
<?xml version="1.0" encoding="utf-8"?>
<fruits>
<fruit>
<item>Apple</item>
<price>100</price>
</fruit>
<fruit>
<item>Banana</item>
<price>200</price>
</fruit>
<fruit>
<item>Cherry</item>
<price>300</price>
</fruit>
</fruits>
xmlstarlet を使う
xmlstarlet を使うことも出来ます。CentOS であれば yum でインストールします。
yum -y install xmlstarlet
Ubuntu であれば apt-get でインストールします。
apt-get -y install xmlstarlet
実行例は以下の通りです。fo は「format」を省略したオプションです。
# xmlstarlet fo fruits.xml
<?xml version="1.0" encoding="UTF-8"?>
<fruits>
<fruit>
<item>Apple</item>
<price>100</price>
</fruit>
<fruit>
<item>Banana</item>
<price>200</price>
</fruit>
<fruit>
<item>Cherry</item>
<price>300</price>
</fruit>
</fruits>
コメント