Compact but pretty JSON output in python?

后端 未结 2 1570
猫巷女王i
猫巷女王i 2021-01-18 13:17

JSON is written either with indent=None (default) as a single line (unreadable to a human eye) or with ident=N with a newline after each comma.

相关标签:
2条回答
  • 2021-01-18 13:55

    I don't know of a tool that already does this, but it isn't hard to make one:

    def compact(d):
        def tight(obj):
            return dumps(obj, separators=(',', ':'))
        print('{')
        for i, (k, v) in enumerate(d.items()):
            comma = ',' if i < len(d) else ''
            print(f' {tight(k)}:{tight(v)}{comma}')
        print('}')
    

    For your example, this emits:

    >>> compact(d)
    {
     "cleanup":{"cpu":6936.780000000001,"wall":7822.319401979446},
     "finished":"2017-08-14 18:36:23",
     "init":{"cpu":1365.73,"wall":1380.7802910804749},
     "job":"timings",
     "run":{"cpu":953.6700000000001,"wall":8350.496850013733},
     "started":"2017-08-14 13:28:06",
    }
    
    0 讨论(0)
  • 2021-01-18 14:00

    This is not possible at this time, but when RFE: more compact pretty printing is implemented, this question will be answered by using python-rapidjson.

    0 讨论(0)
提交回复
热议问题