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.bodyrequest.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的主要内容,如果未能解决你的问题,请参考以下文章

Python - 没有空格的 json

漂亮的打印 JSON python

python与json的数据转换

平面 json 到嵌套 json python

使用 Json Python 格式化 Websocket 数据

Python - 如何搜索没有空格的大字符串,以查看值是不是存在