Pythonの標準ライブラリである「JSONエンコーダ・デコーダ」のCLIを使って、JSONデータの整形表示や記法が正しいかをサクッとチェックすることができます。
LinuxやPowerShell等で、Pythonを実行出来る環境があればOK。
Pythonのプログラム外でも簡単に実行出来て便利です。
- サンプルファイル
- sample1.json
- 改行が含まれない
- 文字列がUnicode
1
{"rabbit_house": [{"name": "\u30B3\u30B3\u30A2","age": 15,"dream": "\u8857\u306E\u56FD\u969B\u30D0\u30EA\u30B9\u30BF\u5F01\u8B77\u58EB"},{"name": "\u30C1\u30CE","age": 13,"dream": "\u30D0\u30EA\u30B9\u30BF"},{"name": "\u30EA\u30BC","age": 16,"dream": "\u5C0F\u5B66\u6821\u6559\u5E2B"}]}
- sample2.json
- 誤った記法(10行目:”,”を2連続で入力)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
{ "rabbit_house": [ { "name": "\u30B3\u30B3\u30A2", "age": 15, "dream": "\u8857\u306E\u56FD\u969B\u30D0\u30EA\u30B9\u30BF\u5F01\u8B77\u58EB" }, { "name": "\u30C1\u30CE", "age": 13,, // 誤った記法 "dream": "\u30D0\u30EA\u30B9\u30BF" }, { "name": "\u30EA\u30BC", "age": 16, "dream": "\u5C0F\u5B66\u6821\u6559\u5E2B" } ] }
- sample1.json
JSONを整形する
- 改行・インデントが入って見易くなる!
- Unicode文字列もデコードされ読める形式になる。
ファイルから入力
python -m json.tool {filename}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ python -m json.tool sample1.json
{
"rabbit_house": [
{
"name": "ココア",
"age": 15,
"dream": "街の国際バリスタ弁護士"
},
{
"name": "チノ",
"age": 13,
"dream": "バリスタ"
},
{
"name": "リゼ",
"age": 16,
"dream": "小学校教師"
}
]
}
標準入力から入力
{string} | python -m json.tool
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 文字列をパイプで渡す
$ '{"name": "チノ","age": 13,"dream": "バリスタ"}' | python -m json.tool
{
"name": "チノ",
"age": 13,
"dream": "バリスタ"
}
// catコマンドからパイプで渡す
$ cat sample1.json | python -m json.tool
{
"rabbit_house": [
{
"name": "ココア",
"age": 15,
"dream": "街の国際バリスタ弁護士"
},
...
}
ファイルへ出力
python -m json.tool {input_file} {output_file}
1
2
3
4
5
6
7
8
9
10
11
12
13
// sample1.json を整形して output.json に出力する
$ python -m json.tool sample1.json output.json
$ cat output.json
{
"rabbit_house": [
{
"name": "ココア",
"age": 15,
"dream": "街の国際バリスタ弁護士"
},
...
}
JSONの記法チェック
記法に誤りのあるJSONデータを読み込んだ場合、誤りのある箇所を表示してくれるので、エラー等の原因切り分けにも便利です。
1
2
3
$ python -m json.tool sample2.json
Expecting property name enclosed in double quotes: line 10 column 17 (char 203)