我正在開發(fā) JAX-RS RESTful 服務(wù)。我的模型類按字母順序返回字段。我希望它們按照我在課堂上添加它們的順序返回。這是我的模型類: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}我正在實(shí)例化該類并按照創(chuàng)建字段的順序填充它: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);}填充類對(duì)象后,將其添加到列表中并返回到我的控制器并發(fā)送回網(wǎng)頁(yè)。我的控制器方法返回一個(gè) JSON 對(duì)象。我希望這些字段按照我創(chuàng)建它們的順序排列,但是當(dāng)我填充我的表時(shí),這些對(duì)象是按字母順序排列的。在我之前從事的 RESTful 服務(wù)中,我沒有遇到過這種情況。如何讓字段按照定義的順序排列?如果我在將審計(jì)對(duì)象添加到 ArrayList 的行上設(shè)置斷點(diǎn)并查看對(duì)象,則字段的順序錯(cuò)誤為了回答一些問題,rs 是 SQL 結(jié)果集上的一個(gè)實(shí)例。該查詢按照我需要顯示它們的順序選擇特定的命名字段。我不使用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>();所以現(xiàn)在,在將這些編輯放在一起時(shí),我意識(shí)到我沒有將球衣捆綁包放入我的項(xiàng)目中。這將是 RESTful 服務(wù)的實(shí)現(xiàn)與我所做的其他服務(wù)之間的唯一區(qū)別。這個(gè)正在另一個(gè)項(xiàng)目中實(shí)施。使用 Andrew Tobilko 的建議,我添加了 @JsonPropertyOrder 注釋,這解決了我的擔(dān)憂。那么,我的問題是,這是我完全通過注釋完成的第一個(gè)服務(wù)。我沒有向 web.xml 添加 servlet 映射。在我看來,這種轉(zhuǎn)移似乎不會(huì)導(dǎo)致問題,不是嗎?
1 回答

小怪獸愛吃肉
TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
您用于填充AuditRecord實(shí)例的順序并不重要。它的字段如何序列化以及底層 JSON 編組器選擇的順序很重要。
如果您使用的是 Jackson,這里是解決方案:
@JsonPropertyOrder({
"application",
"objectName",
...
"reconciledDate"
})
public class AuditRecord implements Serializable { ... }
您應(yīng)該按照您希望它們被序列化的方式排列字段名稱。否則,杰克遜將堅(jiān)持字母順序。
如果您不使用 Jackson,您可能需要編寫自己的序列化程序。
添加回答
舉報(bào)
0/150
提交
取消