pythonwise / jsonpretty

#!/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()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.