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

Answers:


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

2
对于具有json验证的doctests非常有用。
andilabs 2015年

9
还要注意,它会indent=0生成换行符,而indent=None(默认值)不在2.7中。所有内容均在以下网址中
西罗Santilli郝海东冠状病六四事件法轮功

ujson默认为不带空格的转储,但遗憾的是它不支持separators关键字,因此如果需要的话不能添加空间。与内置相比,它要快得多json
radtek

我来到这里试图Django的比较request.bodyrequest.data这样人们可能会发现这个有用bytes(json.dumps(request.data, separators=(',', ':')), 'utf-8') == request.body
马特

49

在某些情况下,您可能只希望摆脱尾随空格。然后,您可以使用

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

后面有空格,:但后面没有空格,

这对区分JSON文件(在诸如的版本控制中git diff)很有用,在该版本中,某些编辑器将摆脱尾随的空白,而python json.dump将其重新添加回去。

注意:这并不能完全回答上面的问题,但是我来这里是为了寻找该答案。我认为它不应该进行自己的质量检查,因此在此添加它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.