Jersey JSON键/值顺序

imw*_*ill 5 java json jersey

我正在构建一个使用Jersey来获取JSON数据输出的Java REST Web App.

我遇到了键/值对的排序问题.我希望它是这个顺序:id,name,areaId 但是在我的JSON输出中它是这个顺序:areaId,id,name.

有人知道如何控制订购吗?


这是我的房间对象类:

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;
}

}
Run Code Online (Sandbox Code Playgroud)

这是我的JSON输出:

{
"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"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

更新 好的,我解决了.谢谢你的回复.

我刚刚在@XmlRootElement下面添加了以下代码

@XmlType(propOrder = {
    "id",
    "name",
    "areaId"
})
Run Code Online (Sandbox Code Playgroud)

unc*_*ons 5

看起来元素的顺序是按字母顺序排列的.(是的,我是Sherlock Holmes ......).在大多数情况下,无需订购单个属性.但我相信我曾经做过一些自定义,你可以使用以下注释来控制序列化.

@XmlRootElement
@XmlType(propOrder={"id", "areaId", "name"})
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,那么你可以使用像Jackson或Gson这样的其他序列化机制.