Python - json sem espaços em branco

154

Acabei de perceber que json.dumps()adiciona espaços no objeto JSON

por exemplo

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

como remover os espaços para tornar o JSON mais compacto e salvar bytes a serem enviados via HTTP?

tal como:

{'duration':'02:55','name':'flower','chg':0}
Daniele B
fonte
3
Python 3.4 corrige esse: Changed in version 3.4: Use (',', ': ') as default if indent is not None. docs.python.org/3/library/json.html#json.dump
grisaitis

Respostas:

248
json.dumps(separators=(',', ':'))
donghyun208
fonte
2
Muito útil para documentos com validação json.
andilabs
9
E também observe que indent=0gera novas linhas, enquanto indent=None(padrão) não gera no 2.7. Tudo está claramente afirmado em: docs.python.org/3/library/json.html#json.dump
Ciro Santilli #: 28416
ujsono padrão é dumps sem espaço em branco, mas, infelizmente, ele não suporta separatorspalavras-chave, portanto, não é possível adicionar espaço se desejado. É muito mais rápido que vs embutido json!
Radtek 23/10/19
Eu cheguei aqui tentando comparar o Django request.bodyao que as request.datapessoas acham isso útilbytes(json.dumps(request.data, separators=(',', ':')), 'utf-8') == request.body
Matt
49

Em alguns casos, convém se livrar apenas dos espaços em branco à direita . Você pode então usar

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

Há um espaço depois, :mas não depois ,.

Isso é útil para diferenciar seus arquivos JSON (em controle de versão como git diff), onde alguns editores se livram do espaço em branco à direita, mas o python json.dump o adiciona novamente.

Nota: Isso não responde exatamente à pergunta no topo, mas eu vim aqui procurando essa resposta especificamente. Não acho que ele mereça seu próprio controle de qualidade, por isso estou adicionando aqui.

Hugues Fontenelle
fonte