我正在开发 JAX-RS RESTful 服务。我的模型类按字母顺序返回字段。我希望它们按照我在课堂上添加它们的顺序返回。
这是我的模型类:
public class AuditRecord implements Serializable {
private static final long serialVersionUID = 3682698298601640061L;
private String application;
private String objectName;
private String objectType;
private String system;
private String createdBy;
private String createdDate;
private String createdTime;
private String detectedDate;
private String reconciledBy;
private String reconciledDate;
// removed GETTERS and SETTERS for brevity
}
我正在实例化该类并按照创建字段的顺序填充它:
while(rs.next()) {
AuditRecord a = new AuditRecord();
a.setApplication(rs.getString(1)); // PRAPPL
a.setObjectName(rs.getString(2)); // PROBNM
a.setObjectType(rs.getString(3)); // PROBAT
a.setSystem(rs.getString(4)); // PRCRTS
a.setCreatedBy(rs.getString(5)); // PRCRTU
a.setCreatedDate(rs.getString(6)); // PRCDAT
a.setCreatedTime(rs.getString(7)); // PRCTIM
a.setDetectedDate(rs.getString(8)); // PRDDAT
a.setReconciledBy(rs.getString(9)); // PRRECBY
a.setReconciledDate(rs.getString(10)); // PRRECDT
retVal.add(a);
}
填充类对象后,将其添加到列表中并返回到我的控制器并发送回网页。
我的控制器方法返回一个 JSON 对象。我希望这些字段按照我创建它们的顺序排列,但是当我填充我的表时,这些对象是按字母顺序排列的。
在我之前从事的 RESTful 服务中,我没有遇到过这种情况。如何让字段按照定义的顺序排列?
如果我在将审计对象添加到 ArrayList 的行上设置断点并查看对象,则字段的顺序错误
为了回答一些问题,rs 是 SQL 结果集上的一个实例。该查询按照我需要显示它们的顺序选择特定的命名字段。我不使用select * from ...
最后,最后一块是控制器方法:
@GET
@Path("audits")
@Produces(MediaType.APPLICATION_JSON)
public Response getAuditData(@QueryParam("startDate") String startDate, @QueryParam("endDate") String endDate) {
SoxService service = new SoxService();
List<AuditRecord> data = new ArrayList<AuditRecord>();
所以现在,在将这些编辑放在一起时,我意识到我没有将球衣捆绑包放入我的项目中。这将是 RESTful 服务的实现与我所做的其他服务之间的唯一区别。这个正在另一个项目中实施。
使用 Andrew Tobilko 的建议,我添加了 @JsonPropertyOrder 注释,这解决了我的担忧。
那么,我的问题是,这是我完全通过注释完成的第一个服务。我没有向 web.xml 添加 servlet 映射。在我看来,这种转移似乎不会导致问题,不是吗?
小怪兽爱吃肉
相关分类