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}

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=(',', ':'))

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.