2013-03-14 141 views
0

我們使用Jersey,Jackson和Spring服務(@service)註釋來公開一些基於REST的Web服務。請求和響應數據以JSON格式進行交換。Jersey Jackson和Spring Service

下面是一個服務請求對象的內容:

public class ServiceRequest{ 
    private RequestHeader requestHeader; 
    private List<BaseEntity> requestData; 
} 

所有特定實體將從BaseEntity類擴展。例如:

public class User extends BaseEntity{ 
    private String userName; 
} 

對於所有的業務運營,我們通過傳遞請求數據對象的列表只接受ServiceRequest對象。現在,當我們試圖調用REST從這些客戶端的操作,這些都與

userName is not found as part of BaseEntity. 

這是因爲在轉換,新澤西州/傑克遜試圖與指定對象的屬性自動檢測輸入的字段名稱失敗。

我想知道有沒有辦法,我可以用智能的方式處理這個問題。我們沒有選擇更改服務的簽名。非常感謝你對此的幫助。

+0

是你的BaseEntity是一個JavaBean嗎?(即你有一個getter/setter的用戶名) – 2013-03-14 09:31:29

+0

BaseEntity是一個JavaBean。但用戶(擁有用戶名)擴展了BaseEntity。 BaseEntity只包含id,由創建日期,更新日期,更新日期(這對所有實體通用)。 – Manjunath 2013-03-14 09:48:09

+1

下面的鏈接有我的問題的答案。 http://stackoverflow.com/questions/11798394/polymorphism-in-jackson-annotations-jsontypeinfo-usage – Manjunath 2013-03-16 12:55:17

回答

-1

你有沒有嘗試過使用泛型?你可以在Resource的聲明具體的類類型來通知Jackson映射到特定類型

+0

如果可能,用代碼添加詳細的解釋。 – Sandeep 2016-11-28 11:25:01

相關問題