Câu hỏi của tôi là thứ tự của đối tượng JSON thực sự quan trọng ở phía máy chủ?
Nó không được vấn đề. Theo các thông số kỹ thuật JSON khác nhau, thứ tự của các thuộc tính không đáng kể. Ví dụ:
"Đối tượng là tập hợp các cặp tên/giá trị không theo thứ tự". (Nguồn json.org)
"Một đối tượng là bộ sưu tập không có thứ tự số không hoặc nhiều cặp/giá trị, trong đó tên là chuỗi và giá trị là chuỗi, số, boolean, null, đối tượng hoặc mảng". (Nguồn RFC 7159)
Thật không may, có nitwits ngoài kia người bỏ qua khía cạnh của thông số kỹ thuật, và đặt một số ý nghĩa về thứ tự của các thuộc tính. (Sai lầm thường được thực hiện khi có sự ngắt kết nối giữa những người chỉ định các API và những người thực hiện chúng, và những người làm công việc đặc tả không thực sự hiểu JSON.)
May mắn thay, cơ hội là bất cứ ai được thiết kế/triển khai máy chủ không mắc lỗi đó. Tất cả các trình phân tích cú pháp JSON JSON tôi đã gặp không bảo toàn thứ tự thuộc tính khi phân tích cú pháp ... theo mặc định . Sẽ rất khó để vô tình triển khai máy chủ trong đó thứ tự thuộc tính JSON được phân tích cú pháp là đáng kể.
Nếu có, làm thế nào tôi có thể thay đổi thứ tự?
Với khó khăn, tôi sợ:
- Bạn có thể tạo ra JSON bằng tay.
- Có ít nhất một JSON để triển khai java cho phép bạn cung cấp đối tượng
Map
chứa thuộc tính của đối tượng JSON. Nếu bạn sử dụng một số LinkedHashMap
hoặc TreeMap
, nó sẽ giữ lại thứ tự chèn hoặc thứ tự từ khóa của các phím thuộc tính.
1 - Ví dụ, nitwits rằng nhà phát triển nghèo này đã làm việc cho ... https://stackoverflow.com/a/4515863/139985
2 - RFC 7159 cũng nói thế này: "JSON thư viện phân tích cú pháp đã được quan sát thấy Việc triển khai có hành vi không phụ thuộc vào thứ tự thành viên sẽ tương thích với nhau theo nghĩa là chúng sẽ không bị ảnh hưởng bởi những khác biệt này. ". Bằng cách đọc của tôi, điều này khuyến nghị rằng thư viện JSON nên ẩn mọi thứ tự của các cặp khỏi mã ứng dụng.
3 - JSON-đơn giản: https://code.google.com/p/json-simple/. Có thể có những người khác nữa.
Nguồn
2013-06-01 08:03:37
Sự cố bạn đang gặp phải là gì? Bất kỳ lỗi hoặc ngoại lệ nào? –
JSON RFC (RFC 4627) nói rằng thứ tự của các thành viên đối tượng không quan trọng. – fge
Lưu ý về bản thân tương lai khi Google đưa tôi trở lại đây: MongoDB nhạy cảm với thứ tự các phím khi kiểm tra bình đẳng đối tượng. Nếu bạn có tài liệu có _id: {key1: "foo", key2: "bar"}, bạn sẽ không tìm thấy tài liệu với tìm ({_ id: {key2: "bar", key1: "foo"}}). – ahains