2011-07-13 43 views
5

Tôi đang xây dựng một Ứng dụng web Java REST với việc sử dụng Jersey để lấy dữ liệu đầu ra JSON.Thứ tự khóa/giá trị Jersey JSON

Tôi gặp phải sự cố khi đặt hàng các cặp khóa/giá trị. Tôi muốn nó theo thứ tự này: id, name, areaId Nhưng trong JSON của tôi, nó là thứ tự này: areaId, id, name.

Có ai đó biết cách kiểm soát thứ tự không?


Đây là phòng của tôi Object Class:

import javax.xml.bind.annotation.XmlAttribute; 
import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement 
public class RoomEntitiy { 

private int id; 
private String name; 
private int areaId; 

public RoomEntitiy() {} 

public RoomEntitiy(int id, String name, int areaId) { 
    this.id = id; 
    this.name = name; 
    this.areaId = areaId; 
} 
@XmlAttribute 
public final int getId() { 
    return id; 
} 

public final void setId(int id) { 
    this.id = id; 
} 

public final String getName() { 
    return name; 
} 

public final void setName(String name) { 
    this.name = name; 
} 


public final int getArea() { 
    return areaId; 
} 

public final void setArea(int areaId) { 
    this.areaId = areaId; 
} 

} 

Đây là đầu ra JSON của tôi:

{ 
"rooms": [ 
    { 
     "areaId": 2, 
     "id": 1, 
     "name": "room 831" 
    }, 
    { 
     "areaId": 1, 
     "id": 2, 
     "name": "room 683" 
    }, 
    { 
     "areaId": 1, 
     "id": 3, 
     "name": "Raum 485" 
    }, 
    { 
     "areaId": 5, 
     "id": 4, 
     "name": "room 600" 
    }, 
    { 
     "areaId": 2, 
     "id": 5, 
     "name": "room 283" 
    }, 
    { 
     "areaId": 4, 
     "id": 6, 
     "name": "room 696" 
    } 
    ] 
} 

CẬP NHẬT Ok, tôi giải quyết nó. Cảm ơn bạn đã trả lời.

Tôi chỉ cần thêm đoạn mã sau dưới @XmlRootElement

@XmlType(propOrder = { 
    "id", 
    "name", 
    "areaId" 
}) 
+2

Tại sao đơn đặt hàng lại quan trọng? Các đối tượng JavaScript không có thứ tự vốn có. –

Trả lời

4

Dường như thứ tự của phần tử là chữ cái. (Có, tôi là Sherlock Holmes ..). Trong hầu hết các trường hợp, không cần đặt hàng các thuộc tính riêng lẻ. Nhưng tôi tin rằng tôi đã từng thực hiện một số tùy chỉnh và bạn có thể sử dụng chú thích sau để kiểm soát tuần tự hóa.

@XmlRootElement 
@XmlType(propOrder={"id", "areaId", "name"}) 

Nếu điều này không hiệu quả, bạn có thể sử dụng cơ chế tuần tự hóa khác như Jackson hoặc Gson.

+0

Cảm ơn @ doc_180 đã tìm thấy nó – imwill

3

đối tượng JSON là explicitly unordered.

Một đối tượng là một bộ sưu tập có thứ tự của số không hay nhiều tên/giá trị cặp

Nếu bạn muốn trật tự, sử dụng một mảng (nhưng trong trường hợp này, bất cứ điều gì bạn sử dụng để xử lý dữ liệu chỉ nên yêu cầu các phím theo thứ tự nó muốn thay vì lặp).

Các vấn đề liên quan