1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| r"""Command-line tool to validate and pretty-print JSON
|
| Usage::
|
| $ echo '{"json":"obj"}' | python -m json.tool
| {
| "json": "obj"
| }
| $ echo '{ 1.2:3.4}' | python -m json.tool
| Expecting property name enclosed in double quotes: line 1 column 3 (char 2)
|
| """
| import sys
| import json
|
| def main():
| if len(sys.argv) == 1:
| infile = sys.stdin
| outfile = sys.stdout
| elif len(sys.argv) == 2:
| infile = open(sys.argv[1], 'rb')
| outfile = sys.stdout
| elif len(sys.argv) == 3:
| infile = open(sys.argv[1], 'rb')
| outfile = open(sys.argv[2], 'wb')
| else:
| raise SystemExit(sys.argv[0] + " [infile [outfile]]")
| with infile:
| try:
| obj = json.load(infile)
| except ValueError, e:
| raise SystemExit(e)
| with outfile:
| json.dump(obj, outfile, sort_keys=True,
| indent=4, separators=(',', ': '))
| outfile.write('\n')
|
|
| if __name__ == '__main__':
| main()
|
|