Python-空白なしのjson


154

json.dumps()JSONオブジェクトにスペースが追加されることに気づきました

例えば

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

スペースを削除してJSONをよりコンパクトにし、HTTP経由で送信されるバイトを節約するにはどうすればよいですか?

といった:

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

3
Python 3.4はこれを修正します:Changed in version 3.4: Use (',', ': ') as default if indent is not None. docs.python.org/3/library/json.html#json.dump
grisaitis

回答:


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

2
json検証を伴うdoctestに非常に役立ちます。
andilabs

9
また、indent=0は改行を生成しindent=Noneますが、(デフォルト)は2.7では生成しません。すべてが明確に述べられている:docs.python.org/3/library/json.html#json.dump
チロSantilli郝海东冠状病六四事件法轮功

ujsonデフォルトでは空白なしのダンプになりますが、残念ながらseparatorsキーワードをサポートしていないため、必要に応じてスペースを元に戻すことはできません。組み込みよりもはるかに高速ですjson
radtek、

私はDjangoを比較するためにここに到着request.bodyしたrequest.dataので、人々はこれが役立つと思うかもしれませんbytes(json.dumps(request.data, separators=(',', ':')), 'utf-8') == request.body
Matt

49

場合によっては、末尾の空白のみを削除したいことがあります。次に使用できます

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

後にスペースがありますが、後にはあり:ません,

これは、JSONファイルを比較する場合に便利です(などのバージョン管理git diff)。一部のエディターは末尾の空白を削除しますが、python json.dumpはそれを追加します。

注:これは、上の質問の答えにはなりませんが、具体的にこの答えを探してここに来ました。独自のQAに値するとは思わないので、ここに追加します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.