Python - json senza spazi bianchi


154

Ho appena realizzato che json.dumps()aggiunge spazi nell'oggetto JSON

per esempio

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

come rimuovere gli spazi per rendere JSON più compatto e salvare i byte da inviare via HTTP?

ad esempio:

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

3
Python 3.4 risolve questo problema: Changed in version 3.4: Use (',', ': ') as default if indent is not None. docs.python.org/3/library/json.html#json.dump
grisaitis

Risposte:


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

2
Molto utile per i doctest con validazione json.
Andilabs

9
E nota anche che indent=0genera nuove righe, mentre indent=None(impostazione predefinita) non è in 2.7. Tutto è chiaramente indicato su: docs.python.org/3/library/json.html#json.dump
Ciro Santilli 28 冠状 病 六四 事件 法轮功

ujsonil valore predefinito è il dump senza spazi bianchi, ma purtroppo non supporta le separatorsparole chiave, quindi non è possibile aggiungere spazio se lo si desidera. È molto più veloce anche se integrato json!
Radtek,

Sono arrivato qui cercando di confrontare il Django con request.bodyquello che la request.datagente potrebbe trovare utilebytes(json.dumps(request.data, separators=(',', ':')), 'utf-8') == request.body
Matt,

49

In alcuni casi potresti voler eliminare solo gli spazi bianchi finali . È quindi possibile utilizzare

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

C'è uno spazio dopo :ma non dopo ,.

Questo è utile per diffondere i tuoi file JSON (nel controllo di versione come git diff), in cui alcuni editor si sbarazzeranno dello spazio bianco finale ma Python json.dump lo aggiungerà nuovamente.

Nota: questo non risponde esattamente alla domanda in alto, ma sono venuto qui cercando specificamente questa risposta. Non penso che meriti il ​​proprio QA, quindi lo sto aggiungendo qui.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.