XML là một lựa chọn tốt nếu bạn không bị giới hạn bởi kích thước và nó được hỗ trợ nguyên bản (ví dụ: trong .NET và Flash) nhưng nếu bạn muốn định dạng mỏng, bạn có thể tạo định dạng và trình phân tích cú pháp của riêng mình khá dễ dàng. Tôi thường sử dụng 1 ký tự, vd. dấu phẩy để ngăn cách từng đối tượng. Để giải mã chuỗi, hãy phân tách bằng dấu phẩy. Bây giờ mỗi đối tượng cần các thuộc tính khác nhau để phân tách chúng với một ký tự khác nhau, ví dụ: dấu hai chấm và sử dụng một ký tự khác để tách các tên thuộc tính từ các giá trị thuộc tính, ví dụ. Đại tràng. Tất cả do đó có thể được giải mã dễ dàng mà không cần regex chỉ bằng cách sử dụng chuỗi.split. Đây là một ví dụ:
id:1;x:5;y:45.2;angle:45,id:28;x:56;y:89;angle:12;health:78
bạn có thể tiết kiệm nhiều không gian hơn bằng cách giữ tên thuộc tính xuống 1 ký tự, ví dụ: h cho sức khỏe. Ví dụ.
i:1;x:5;y:45.2;a:45,i:28;x:56;y:89;a:12;h:78
So sánh với JSON thay thế:
{"o":[{"i":1, "x":5, "y":45.2, "a":45}, {"i":28, "x":56, "y":89, "a":12, "h":78}]}
Ngoài ra, nếu bạn muốn giảm kích thước số của mình, bạn có thể mã hóa chúng bằng cách sử dụng bộ ký tự UTF16 có thể in đầy đủ. Chủ đề này đã truyền cảm hứng cho tôi để hỏi một câu hỏi về Stack Overflow về số lượng dữ liệu bạn có thể đóng gói thành một nhân vật trên màn hình . Câu trả lời dường như ở đâu đó hơn 40.000 giá trị cho một số nguyên, nếu bạn không phiền khi có các quân cờ, Kanji và cờ vua:
Để giảm kích thước hơn nữa, bạn có thể sử dụng thứ tự đọc / ghi để xác định giá trị nào, vì vậy hai ký tự đầu tiên đại diện cho id, hai ký tự tiếp theo là vị trí x, hai tiếp theo là y, sau đó là góc, sau đó là sức khỏe , v.v.
F5DGP@%&002DFTK#OP1F
có thể lưu trữ tất cả các thông tin giống như các ví dụ khác.
Các ô xếp có thể được lưu trữ dưới dạng một chuỗi với mỗi ký tự đại diện cho một loại ô khác nhau, ví dụ:
i789pog5h3kl
trong đó tôi có thể có nghĩa là dung nham, 9 có nghĩa là cỏ vv