【问题标题】:Python - json without whitespacesPython - 没有空格的 json
【发布时间】: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 json serialization


【解决方案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}]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      • 2020-08-19
      • 2020-12-08
      • 2012-09-23
      • 2014-02-07
      相关资源
      最近更新 更多