Python - json ที่ไม่มีช่องว่าง


154

ฉันเพิ่งรู้ว่าjson.dumps()เพิ่มช่องว่างในวัตถุ JSON

เช่น

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

จะลบช่องว่างเพื่อให้ JSON มีขนาดกะทัดรัดและประหยัดไบต์มากขึ้นในการส่งผ่าน HTTP ได้อย่างไร

เช่น:

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

3
Python 3.4 แก้ไขสิ่งนี้: Changed in version 3.4: Use (',', ': ') as default if indent is not None. docs.python.org/3/library/json.html#json.dump
grisaitis

คำตอบ:


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

2
มีประโยชน์มากสำหรับ doctests ด้วยการตรวจสอบ json
andilabs

9
และโปรดทราบว่าindent=0สร้างบรรทัดใหม่ในขณะที่indent=None(ค่าเริ่มต้น) ไม่ได้อยู่ใน 2.7 ทั้งหมดระบุไว้อย่างชัดเจนที่: docs.python.org/3/library/json.html#json.dump
Ciro Santilli 郝海东冠状病病六四事件法轮功

ujsonเริ่มต้นที่จะทิ้งโดยไม่มีช่องว่าง แต่น่าเศร้าที่มันไม่สนับสนุนseparatorsคำหลักดังนั้นจึงไม่สามารถเพิ่มพื้นที่กลับถ้าต้องการ มันเป็นเร็วมาก แต่เทียบกับในตัวjson!
radtek

ฉันมาถึงที่นี่เพื่อลองเปรียบเทียบ Django request.bodyกับrequest.dataคนอื่น ๆ จึงอาจพบว่ามีประโยชน์bytes(json.dumps(request.data, separators=(',', ':')), 'utf-8') == request.body
Matt

49

ในบางกรณีคุณอาจต้องการกำจัดช่องว่างที่ต่อท้ายเท่านั้น จากนั้นคุณสามารถใช้

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

มีพื้นที่คือหลังจากที่แต่ไม่ได้หลังจาก:,

สิ่งนี้มีประโยชน์สำหรับการกระจายไฟล์ JSON ของคุณ (ในการควบคุมเวอร์ชันเช่นgit diff) ซึ่งผู้แก้ไขบางคนจะกำจัดช่องว่างต่อท้าย แต่ python json.dump จะเพิ่มกลับเข้าไป

หมายเหตุ: นี่ไม่ได้ตอบคำถามด้านบน แต่ฉันมาที่นี่เพื่อค้นหาคำตอบนี้โดยเฉพาะ ฉันไม่คิดว่ามันสมควรได้รับ QA ของตัวเองดังนั้นฉันจึงเพิ่มที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.