import cjson INDENT = 4 OUTDENT = 24 def prettyPrint (jsonstr): return serializePretty (cjson.decode(jsonstr), 0) def serializePretty (obj, lvl): outstr = "" thingkind = type(obj) if thingkind == dict: lvl += 1 outstr += '{\n' for key, val in obj.items(): outstr += '%s"%s":%s%s,\n' % ((' '*4*lvl), key, (' '*(OUTDENT-len(key)-3)), serializePretty (val, lvl)) lvl -= 1 outstr += '%s}' % (' '*4*lvl) elif thingkind == list: lvl += 1 outstr += '[\n' for val in obj: outstr += '%s%s,\n' % ((' '*4*lvl), serializePretty (val, lvl)) lvl -= 1 outstr += '%s]' % (' '*4*lvl) else: outstr = repr(obj) return outstr with open ("path/to/file", "r") as jsonfile: prettyPrint (jsonfile.read())