If it won't be simple, it simply won't be. [Hire me, source code] by Miki Tebeka, CEO, 353Solutions

Saturday, June 06, 2009

JSON Pretiffier

#!/usr/bin/env python
'''JSON prettifier'''

def shift(array):
try:
return array.pop(0)
except IndexError:
return None

def fopen(name, mode, default):
if name in (None, "-"):
return default
return open(name, mode)

def main(argv=None):
import sys
from optparse import OptionParser

argv = argv or sys.argv

indent = 4
parser = OptionParser("%prog [INFILE [OUTFILE]]")
parser.add_option("-i", "--indent", help="indent size (%s)" % indent,
dest="indent", default=indent, type="int")
opts, args = parser.parse_args(argv[1:])
if len(args) not in (0, 1, 2):
parser.error("wrong number of arguments") # Will exit

try:
info = fopen(shift(args), "r", sys.stdin)
outfo = fopen(shift(args), "w", sys.stdout)
except IOError, e:
raise SystemExit("error: %s" % e)

import json
json.dump(json.load(info), outfo, indent=opts.indent)

if __name__ == "__main__":
main()


Update (Aug 14, 2009): Just found out about python -mjson.tool, oh well ...

4 comments:

laddek said...

huh?

Miki Tebeka said...

A lot of sites that return JSON, compact it take less bandwidth. This will format the JSON to be more human readable.

So {"a":1,"b":2} becomes

{
"a": 1,
"b": 2
}

Anonymous said...

cool

Miki Tebeka said...

Just found out about python -mjson.tool, oh well ...

Blog Archive