Das Verhalten von json.dumps unterscheidet sich, wenn die Option zum Einrücken zwischen python2.7 und python3.6 angegeben wird. In Python2 steht vor dem Zeilenvorschubcode ein Leerzeichen, in Python3 jedoch nicht.
import json
json.dumps({"name": 'aaa', "age": 21}, sort_keys=True, indent=2)
python2.7.8
'{\n "age": 21, \n "name": "aaa"\n}'
python3.6.0
> '{\n "age": 21,\n "name": "aaa"\n}'
Issue 16333: Trailing whitespace in json dump when using indent - Python tracker
Fügen Sie den Optionen in json.dumps separators = (',', ':')
hinzu.
import json
json.dumps({"name": 'aaa', "age": 21}, sort_keys=True, indent=2, separators=(',', ': '))