Python - 没有空格的 json
Posted
技术标签:
【中文标题】Python - 没有空格的 json【英文标题】:Python - json without whitespaces 【发布时间】:2013-04-25 01:29:34 【问题描述】:我刚刚意识到json.dumps()
在 JSON 对象中添加了空格
例如
'duration': '02:55', 'name': 'flower', 'chg': 0
如何删除空格以使 JSON 更紧凑并节省通过 HTTP 发送的字节?
如:
'duration':'02:55','name':'flower','chg':0
【问题讨论】:
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
【参考方案1】:
json.dumps(separators=(',', ':'))
【讨论】:
对于带有 json 验证的文档测试非常有用。 还要注意indent=0
生成换行符,而 indent=None
(默认)在 2.7 中不会。一切都清楚地说明在:docs.python.org/3/library/json.html#json.dump
ujson
默认为没有空格的转储,但遗憾的是它不支持 separators
关键字,因此如果需要,无法添加空格。虽然它比内置 json
快得多!
我来到这里试图将 Django request.body
与 request.data
进行比较,这样人们可能会发现这很有用 bytes(json.dumps(request.data, separators=(',', ':')), 'utf-8') == request.body
【参考方案2】:
在某些情况下,您可能只想去掉尾随空格。 然后你可以使用
json.dumps(separators=(',', ': '))
:
后面有一个空格,,
后面没有。
这对于区分您的 JSON 文件(在版本控制中,例如 git diff
)很有用,其中一些编辑器会删除尾随空格,但 python json.dump 会将其添加回来。
注意:这并不能完全回答上面的问题,但我是专门来这里寻找这个答案的。我认为它不值得拥有自己的 QA,所以我在这里添加它。
【讨论】:
【参考方案3】:压缩编码:
import json
list_1 = [1, 2, 3, '4': 5, '6': 7]
json.dumps(list_1, separators=(',', ':'))
print(list_1)
[1,2,3,"4":5,"6":7]
【讨论】:
以上是关于Python - 没有空格的 json的主要内容,如果未能解决你的问题,请参考以下文章