JSON や XML を整形して表示する
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 がインストールされている環境は多いでしょうから、「事前準備が必要無く、手軽」というメリットがあります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | # 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 でインストールします。
Ubuntu であれば apt-get でインストールします。
実行例は以下の通りです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | # 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
|
実行例は以下の通りです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | # 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 でインストールします。
Ubuntu であれば apt-get でインストールします。
実行例は以下の通りです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | # 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」を省略したオプションです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | # 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>
|