java - Jersey JSON 键/值顺序

标签 java json jersey

我正在使用 Jersey 构建一个 Java REST Web 应用程序来获取 JSON 数据输出。

我遇到了键/值对的排序问题。 我希望它是这样的顺序: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;
}

}

这是我的 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"
    }
  ]
}

更新 好的,我解决了。感谢您的回复。

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

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

最佳答案

看来元素的顺序是按字母顺序的。(是的,我是夏洛克·福尔摩斯..)。在大多数情况下,不需要对单个属性进行排序。但是我相信我曾经做过一些定制,你可以使用下面的注解来控制序列化。

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

如果这不起作用,那么您可以使用其他序列化机制,例如 Jackson 或 Gson。

关于java - Jersey JSON 键/值顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6679383/

相关文章:

ios - RESTKIT 将 JSON 与 text/html 内容类型映射

json - 如何为 Go 结构创建 JSON

rest - 如何向 Jersey 客户端添加新 header 以上传多部分文件

java - 无法在 itextSharp 5.5/Prop_Build 中添加签名创建器未正确渲染

java - log4j 将 "sg"添加到每个记录行

java - 将 POJO 转换为 Map

java - Servicestack 或 SignalR 的 SSE Java 客户端

java - 如何在android电视中使用类似netflix的浏览 fragment 制作侧边菜单?

java - 如何使用Java获取rabbitmq中声明的交换和队列列表?

java - 让 Jersey 1.x 和 2.x 共存