Python - json không có khoảng trắng


154

Tôi mới nhận ra rằng json.dumps()thêm khoảng trắng trong đối tượng JSON

ví dụ

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

làm cách nào để xóa các khoảng trắng để làm cho JSON nhỏ gọn hơn và lưu các byte được gửi qua HTTP?

nhu la:

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

3
Python 3.4 sửa lỗi này: Changed in version 3.4: Use (',', ': ') as default if indent is not None. docs.python.org/3/library/json.html#json.dump
grisaitis

Câu trả lời:


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

2
Rất hữu ích cho doctests với xác nhận json.
andilabs

9
Và cũng lưu ý rằng indent=0tạo dòng mới, trong khi indent=None(mặc định) không có trong 2.7. Tất cả được nêu rõ tại địa chỉ: docs.python.org/3/library/json.html#json.dump
Ciro Santilli郝海东冠状病六四事件法轮功

ujsonmặc định cho các bãi chứa không có khoảng trắng nhưng thật đáng buồn là nó không hỗ trợ separatorstừ khóa nên không thể thêm lại khoảng trống nếu muốn. Nó nhanh hơn rất nhiều mặc dù so với tích hợp json!
radtek

Tôi đến đây để cố gắng so sánh Django request.bodyvới request.datamọi người có thể thấy điều này hữu íchbytes(json.dumps(request.data, separators=(',', ':')), 'utf-8') == request.body
Matt

49

Trong một số trường hợp, bạn có thể muốn thoát khỏi các khoảng trắng chỉ. Sau đó bạn có thể sử dụng

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

Có một không gian sau :nhưng không phải sau ,.

Điều này hữu ích để phân biệt các tệp JSON của bạn (trong kiểm soát phiên bản, chẳng hạn như git diff), trong đó một số trình soạn thảo sẽ thoát khỏi khoảng trắng ở cuối nhưng python json.dump sẽ thêm lại.

Lưu ý: Điều này không trả lời chính xác câu hỏi trên đầu, nhưng tôi đến đây để tìm câu trả lời này một cách cụ thể. Tôi không nghĩ rằng nó xứng đáng với QA của riêng mình, vì vậy tôi sẽ thêm nó vào đây.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.