Thực hành Tốt nhất Định dạng JSON: Đọc được, Hợp lệ và Hiệu quả
Trả lời nhanh
Dùng indent 2-space cho JSON đọc được, không trailing comma, double-quoted key và sắp xếp key nhất quán. Minify JSON cho transport production và pretty-print cho development. Dùng JSON Formatter miễn phí để chuyển ngay lập tức.
Giới thiệu
Lựa chọn định dạng JSON ảnh hưởng khả năng đọc, kích thước tệp và tốc độ debug. Mặc dù syntax JSON được định nghĩa nghiêm ngặt bởi RFC 8259, cách bạn indent, sắp xếp key và xử lý whitespace là vấn đề convention. Hướng dẫn này giải thích best practice phổ biến để JSON của bạn nhất quán giữa team, dễ debug và hiệu quả qua network.
Từng bước một
-
Chọn chiều rộng thụt lề
2 dấu cách là quy ước phổ biến nhất (Prettier, ESLint, Google JSON Style Guide). 4 khoảng trắng có thể được chấp nhận đối với các cấu hình được lồng sâu. Tab không được khuyến khích vì cách hiển thị khác nhau tùy theo trình chỉnh sửa. Chọn một và thực thi nó trên toàn dự án.
-
Đặt hàng chìa khóa một cách nhất quán
Sắp xếp các khóa theo thứ tự bảng chữ cái cho đầu ra xác định (hữu ích cho bộ nhớ đệm và các khác biệt) hoặc nhóm theo ý nghĩa miền (id trước, sau đó là thuộc tính, sau đó là mối quan hệ). Tránh thứ tự khóa ngẫu nhiên —nó làm nhiễu các khác biệt và phá vỡ các bài kiểm tra ảnh chụp nhanh.
-
Giảm thiểu vận chuyển sản xuất
JSON được rút gọn sẽ loại bỏ tất cả khoảng trắng không cần thiết, giảm kích thước tải trọng xuống 10—0%. Phục vụ JSON được rút gọn từ APIs trong quá trình sản xuất và giữ JSON được in đẹp chỉ để phát triển và gỡ lỗi cục bộ.
-
Xác thực trước khi gửi
Luôn chạy JSON thông qua trình xác thực trước khi gửi tới API hoặc ghi vào tệp cấu hình. Một dấu phẩy ở cuối hoặc khóa không có dấu ngoặc kép sẽ khiến JSON.parse() ném và phá vỡ người tiêu dùng.
-
Sử dụng bộ định dạng để chuyển đổi chế độ
Dán JSON của bạn vào Trình định dạng JSON để làm đẹp cho việc đọc hoặc thu nhỏ để vận chuyển. Công cụ này xác thực cú pháp và báo cáo vị trí chính xác của bất kỳ lỗi nào, tiết kiệm thời gian gỡ lỗi.
Ví dụ
In đẹp (thụt lề 2 dấu cách)
đầu vào: {"id":1,"name":"Alice","active":true}
đầu ra: {
"id": 1,
"name": "Alice",
"active": true
}
Giảm thiểu cho sản xuất
đầu vào: {
"id": 1,
"name": "Alice"
}
đầu ra: {"id":1,"name":"Alice"}
Các phím được sắp xếp theo thứ tự bảng chữ cái
đầu vào: {"zebra":1,"apple":2,"mango":3}
đầu ra: {"apple":2,"mango":3,"zebra":1}
Các vấn đề thường gặp
- Dấu phẩy ở cuối: {"a":1,} không hợp lệ JSON. Hầu hết các trình định dạng sẽ loại bỏ chúng, nhưng các trình phân tích cú pháp nghiêm ngặt như JSON.parse() sẽ từ chối dữ liệu đầu vào.
- Dấu ngoặc đơn và khóa không có dấu ngoặc kép: {'a':1} và {a:1} là JavaScript hợp lệ nhưng JSON không hợp lệ. Luôn sử dụng dấu ngoặc kép cho khóa và giá trị chuỗi.
- Nhận xét trong JSON: JSON tiêu chuẩn không cho phép // hoặc /* */ nhận xét. Sử dụng JSONC, JSON5 hoặc tệp lược đồ riêng nếu bạn cần tài liệu nội tuyến.
- Thụt lề hỗn hợp: trộn các tab và dấu cách sẽ phá vỡ các công cụ khác nhau và có thể gây ra lỗi lint "thụt lề không nhất quán". Chuẩn hóa bằng một bộ định dạng trước khi cam kết.
Mẹo
- Định cấu hình trình soạn thảo của bạn để định dạng JSON khi lưu với thụt lề 2 dấu cách —điều này ngăn cản các cuộc tranh luận về kiểu trong quá trình đánh giá mã.
- Đối với phản hồi API, hãy đặt Content-Type: application/json; charset=utf-8 và phục vụ JSON được rút gọn bằng cách nén gzip/Brotli để đạt hiệu quả tối đa.
- Sử dụng thứ tự khóa xác định (ví dụ: theo thứ tự bảng chữ cái) khi JSON được băm hoặc so sánh trong các thử nghiệm chụp nhanh — thứ tự ngẫu nhiên gây ra lỗi dương tính giả.
- Khi gỡ lỗi một tải trọng JSON lớn, hãy in nó trước, sau đó sử dụng biểu thức chính quy hoặc jq để trích xuất cây con có liên quan thay vì quét bằng mắt.