Tôi đang cố gắng thay thế một chuỗi JSON (de) tùy chỉnh trong một dự án groovy/grails với Jackson.JSON được tuần tự hóa với các phím được sắp xếp, sử dụng Jackson
Tôi đang gặp sự cố khi đưa Jackson xuất ra một JSON được in đẹp bằng các phím được sắp xếp theo thứ tự chữ cái 'tự nhiên' đơn giản. Tôi đã thử này (và nhiều biến thể):
mymap = [ ... ] // Some groovy map
def mapper = new ObjectMapper()
mapper.configure(SerializationConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY, true)
def jsonstring = mapper.defaultPrettyPrintingWriter().writeValueAsString(mymap)
Nhưng Jackson bướng bỉnh tạo ra một JSON nơi các phím dường như là theo một thứ tự ngẫu nhiên. Tôi đã thử thay đổi loại 'mymap' bằng TreeMap và trong trường hợp đó, tất cả các khóa được sắp xếp đúng như mong đợi.
Tôi tự hỏi nếu có cách nào để nhận các phím được sắp xếp mà không cần thay đổi 'mymap' ở trên thành TreeMap (và đệ quy tất cả giá trị bản đồ của nó ...).
SORT_PROPERTIES_ALPHABETICALLY dường như được dự định để thực hiện chính xác điều đó, nhưng không phải vì lý do nào đó. Bạn có biết tại sao không? Bất cứ điều gì tôi đang làm sai ở trên?
Tôi đã thử với Jackson 1.8.3, 1.8.8 và 1.9.5, cùng một kết quả (khóa ngẫu nhiên).
Điểm tốt, tôi đã bỏ lỡ đó. Có vẻ như tôi có thể phải quên cách thanh lịch đẹp đẽ của việc thiết lập tùy chọn tuần tự hóa. –
Bạn có thể thực hiện: 'def jsonstring = mapper.defaultPrettyPrintingWriter(). WriteValueAsString (mymap as TreeMap)' có thể không? –
Không có điều đó không hữu ích. Việc triển khai 'mymap' không phải là TreeMap. Và ngay cả khi nó đã được, tôi sẽ phải đảm bảo rằng tất cả các giá trị bản đồ khác trong 'mymap' cũng TreeMap, và đó là nơi nó được rất khó khăn. –