Python - json tanpa spasi putih

154

Saya baru menyadari bahwa json.dumps()menambahkan spasi di objek JSON

misalnya

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

bagaimana cara menghapus spasi agar JSON lebih ringkas dan menghemat byte untuk dikirim melalui HTTP?

seperti:

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

Jawaban:

248
json.dumps(separators=(',', ':'))
donghyun208
sumber
2
Sangat berguna untuk dokumen dengan validasi json.
andilabs
9
Dan juga perhatikan bahwa indent=0menghasilkan baris baru, sementara indent=None(default) tidak dalam 2.7. Semua dinyatakan dengan jelas di: docs.python.org/3/library/json.html#json.dump
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功 法轮功
ujsondefault untuk dumps tanpa spasi tetapi sayangnya tidak mendukung separatorskata kunci sehingga tidak dapat menambah ruang kembali jika diinginkan. Ini jauh lebih cepat meskipun vs built in json!
radtek
Saya tiba di sini mencoba membandingkan Django request.bodydengan orang- request.dataorang sehingga mungkin menemukan ini bergunabytes(json.dumps(request.data, separators=(',', ':')), 'utf-8') == request.body
Matt
49

Dalam beberapa kasus, Anda mungkin ingin menyingkirkan spasi putih tambahan saja. Anda kemudian dapat menggunakan

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

Ada ruang setelah :tetapi tidak setelah ,.

Ini berguna untuk membedakan file JSON Anda (dalam kontrol versi seperti git diff), di mana beberapa editor akan menghilangkan spasi spasi tambahan tetapi python json.dump akan menambahkannya kembali.

Catatan: Ini tidak persis menjawab pertanyaan di atas, tetapi saya datang ke sini mencari jawaban ini secara khusus. Saya tidak berpikir itu layak QA sendiri, jadi saya menambahkannya di sini.

Hugues Fontenelle
sumber