Issue 28984: json.dump + indent creates trailing extra spaces (original) (raw)

module json python 2.7.12

json.dump(..., indent=4, sort_keys=True) gives me:

{ "size": { "total": 19106,X "code": 18614,X "data": 492 },X "next_item": 10 }

The "X" mark extra trailing space characters which are needless.

This is documented behavior for Python 2 ( https://docs.python.org/2/library/json.html#basic-usage ):

Note: Since the default item separator is ', ', the output might include trailing whitespace when indent is specified. You can use separators=(',', ': ') to avoid this.

and also:

If specified, separators should be an (item_separator, key_separator) tuple. By default, (', ', ': ') are used. To get the most compact JSON representation, you should specify (',', ':') to eliminate whitespace.

Python 3 gives a different guarantee (dynamically chosen default separators based on the value of indent), and it follows that contract.

Given it's clearly documented, easily worked around, and largely harmless, I see no strong argument for backporting the Python 3 behavior to the legacy codebase.