Python - json ohne Leerzeichen

154

Ich habe gerade festgestellt, dass json.dumps()Leerzeichen im JSON-Objekt hinzugefügt werden

z.B

{'duration': '02:55', 'name': 'flower', 'chg': 0}

Wie können Leerzeichen entfernt werden, um den JSON kompakter zu gestalten und Bytes zu speichern, die über HTTP gesendet werden sollen?

sowie:

{'duration':'02:55','name':'flower','chg':0}
Daniele B.
quelle
3
Python 3.4 behebt dies: Changed in version 3.4: Use (',', ': ') as default if indent is not None. docs.python.org/3/library/json.html#json.dump
Grisaitis

Antworten:

248
json.dumps(separators=(',', ':'))
donghyun208
quelle
2
Sehr nützlich für Doctests mit JSON-Validierung.
Andilabs
9
Beachten Sie auch, dass indent=0Zeilenumbrüche generiert werden, während indent=None(Standard) dies in 2.7 nicht tut. Alles ist klar angegeben unter: docs.python.org/3/library/json.html#json.dump
Ciro Santilli 28 冠状 病 六四 事件 28
ujsonStandardmäßig werden Dumps ohne Leerzeichen verwendet, aber leider wird das separatorsSchlüsselwort nicht unterstützt, sodass auf Wunsch kein Speicherplatz mehr hinzugefügt werden kann. Es ist viel schneller als eingebaut json!
Radtek
Ich bin hier angekommen und habe versucht, den Django request.bodymit dem zu vergleichen , request.datadamit die Leute dies nützlich findenbytes(json.dumps(request.data, separators=(',', ':')), 'utf-8') == request.body
Matt
49

In einigen Fällen möchten Sie möglicherweise nur die nachfolgenden Leerzeichen entfernen . Sie können dann verwenden

json.dumps(separators=(',', ': '))

Es gibt ein Leerzeichen danach, :aber nicht danach ,.

Dies ist nützlich, um Ihre JSON-Dateien zu unterscheiden (z. B. in der Versionskontrolle git diff), wobei einige Editoren das nachfolgende Leerzeichen entfernen, Python json.dump es jedoch wieder hinzufügt.

Hinweis: Dies beantwortet die obige Frage nicht genau, aber ich bin hierher gekommen, um diese Antwort speziell zu suchen. Ich denke nicht, dass es eine eigene Qualitätssicherung verdient, also füge ich es hier hinzu.

Hugues Fontenelle
quelle