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.