Có nhiều cách (hacky) để làm điều đó ... nhưng bạn không nên.
Trong JSON, một đối tượng được định nghĩa như vậy:
Một đối tượng là một tập hợp các cặp tên / giá trị không có thứ tự.
Xem http://json.org .
Hầu hết các triển khai JSON đều không cố gắng duy trì thứ tự của các cặp tên / giá trị của một đối tượng, vì nó (theo định nghĩa) không đáng kể.
Nếu bạn muốn thứ tự được giữ nguyên, bạn cần xác định lại cấu trúc dữ liệu của mình; ví dụ
{
"items":
[
[
{"WR":"qwe"},
{"QU":"asd"},
{"QA":"end"},
{"WO":"hasd"},
{"NO":"qwer"}
],
]
}
hoặc đơn giản hơn:
{
"items":
[
{"WR":"qwe"},
{"QU":"asd"},
{"QA":"end"},
{"WO":"hasd"},
{"NO":"qwer"}
]
}
THEO SÁT
Cảm ơn bạn đã cung cấp thông tin, nhưng tôi không có lựa chọn nào khác ngoài việc sử dụng JSON trong ứng dụng của mình và ứng dụng của tôi cần giữ thứ tự của các khóa bất kể định nghĩa của đối tượng JSON là gì ... Tôi không được phép thay đổi định dạng của tệp JSON cũng...
Bạn cần có một cuộc trò chuyện khó khăn với người đã thiết kế cấu trúc tệp đó và sẽ không cho phép bạn thay đổi cấu trúc đó. Đó là / họ rõ ràng là sai. Bạn cần thuyết phục họ.
Nếu họ thực sự không cho phép bạn thay đổi nó:
- Bạn nên kiên quyết không gọi nó là JSON ... 'vì nó không phải vậy.
- Bạn nên chỉ ra rằng bạn sẽ phải viết / sửa đổi mã đặc biệt để xử lý định dạng "không phải JSON" này ... trừ khi bạn có thể tìm thấy một số triển khai JSON duy trì thứ tự. Nếu họ là khách hàng trả tiền, hãy đảm bảo rằng họ trả tiền cho công việc bạn phải làm.
- Bạn nên chỉ ra rằng nếu "không phải JSON" cần được sử dụng bởi một số công cụ khác, thì nó sẽ có vấn đề. Thật vậy, vấn đề này sẽ xảy ra lặp đi lặp lại ...
Loại điều này thực sự tồi tệ. Một mặt, phần mềm của bạn sẽ vi phạm đặc điểm kỹ thuật lâu đời / đã được thiết lập tốt được thiết kế để thúc đẩy khả năng tương tác. Mặt khác, các nit-wits đã thiết kế định dạng tệp khập khiễng này (không phải JSON!) Có thể đang xỉa xói hệ thống của người khác, v.v. vì hệ thống không thể đối phó với những điều vô nghĩa của chúng .
CẬP NHẬT
Nó cũng đáng đọc những gì JSON RFC (RFC 7159) nói về chủ đề này. Dưới đây là một số đoạn trích:
Trong những năm kể từ khi xuất bản RFC 4627, JSON đã được sử dụng rất rộng rãi. Trải nghiệm này đã tiết lộ một số mẫu nhất định, mặc dù được thông số kỹ thuật cho phép, nhưng đã gây ra các vấn đề về khả năng tương tác.
JavaScript Object Notation (JSON) là một định dạng văn bản để tuần tự hóa dữ liệu có cấu trúc. ...
JSON có thể đại diện cho bốn kiểu nguyên thủy (chuỗi, số, boolean và null) và hai kiểu có cấu trúc (đối tượng và mảng).
Đối tượng là một tập hợp không có thứ tự gồm không hoặc nhiều cặp tên / giá trị, trong đó tên là một chuỗi và một giá trị là một chuỗi, số, boolean, null, đối tượng hoặc mảng.
Các thư viện phân tích cú pháp JSON đã được quan sát thấy có sự khác biệt về việc chúng có hiển thị thứ tự của các thành viên đối tượng đối với phần mềm gọi hay không. Các triển khai có hành vi không phụ thuộc vào thứ tự của thành viên sẽ có thể tương tác 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.