亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數據模型類未按定義的順序返回字段

數據模型類未按定義的順序返回字段

手掌心 2022-03-10 16:00:05
我正在開發 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 映射。在我看來,這種轉移似乎不會導致問題,不是嗎?
查看完整描述

1 回答

?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

您用于填充AuditRecord實例的順序并不重要。它的字段如何序列化以及底層 JSON 編組器選擇的順序很重要。


如果您使用的是 Jackson,這里是解決方案:


@JsonPropertyOrder({ 

    "application", 

    "objectName",

    ...

    "reconciledDate"

})

public class AuditRecord implements Serializable { ... }

您應該按照您希望它們被序列化的方式排列字段名稱。否則,杰克遜將堅持字母順序。


如果您不使用 Jackson,您可能需要編寫自己的序列化程序。


查看完整回答
反對 回復 2022-03-10
  • 1 回答
  • 0 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號