tool.py revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)r"""Command-line tool to validate and pretty-print JSON 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)Usage:: 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) $ echo '{"json":"obj"}' | python -m simplejson.tool 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "json": "obj" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) $ echo '{ 1.2:3.4}' | python -m simplejson.tool 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Expecting property name: line 1 column 2 (char 2) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)""" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import sys 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import simplejson as json 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def main(): 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if len(sys.argv) == 1: 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) infile = sys.stdin 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) outfile = sys.stdout 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) elif len(sys.argv) == 2: 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) infile = open(sys.argv[1], 'rb') 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) outfile = sys.stdout 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) elif len(sys.argv) == 3: 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) infile = open(sys.argv[1], 'rb') 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) outfile = open(sys.argv[2], 'wb') 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) else: 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) raise SystemExit(sys.argv[0] + " [infile [outfile]]") 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) try: 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) obj = json.load(infile, 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) object_pairs_hook=json.OrderedDict, 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) use_decimal=True) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) except ValueError, e: 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) raise SystemExit(e) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) json.dump(obj, outfile, sort_keys=True, indent=' ', use_decimal=True) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) outfile.write('\n') 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)if __name__ == '__main__': 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) main() 40