Spring MVC靈活控制返回json的值(自定義過濾字段)


在使用spring MVC開發過程中,為了提高項目執行效率,所以在一些外鍵字段的實體中會注解”@ManyToOne(fetch = FetchType.LAZY)”以實現延遲加載的效果。

但是,在使用ajax請求數據,當需要返回的序列化數據中包含延遲加載的屬性時,會出現錯誤,延遲加載的屬性無法進行序列化。在這個時候,我們需要暫時取消延遲加載,以取到所有需要的數據。

可是,這樣又會造成一堆垃圾數據的產生、序列化、傳遞至前台。

所以需要在控制層進行數據過濾,只序列化需要的數據。

具體過濾方法如下:

String jsonString = "";
ObjectMapper objectMapper = new ObjectMapper();
//過濾懶加載屬性
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false);
//過濾后時間屬性格式
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
                               //設置需要保留的字段(id,memberId.name,orderId.serviceTime)
objectMapper.setFilters(JsonFilterUtil.getFilterOut("id","memberId","name","orderId","serviceTime"));
objectMapper.addMixIn(TourRecord.class,JsonFilterUtil.getObjectFilterMinIn());
//需要過濾的外鍵類型
objectMapper.addMixIn(Member.class,JsonFilterUtil.getObjectFilterMinIn());
objectMapper.addMixIn(Order.class,JsonFilterUtil.getObjectFilterMinIn());
try {
   //序列化數據
    jsonString = objectMapper.writeValueAsString(tourRecords);
} catch (JsonProcessingException e) {
    e.printStackTrace();
}
map.put("tourList", jsonString);

 

要實現過濾json返回數據的方式有很多種,有興趣的同學可以去看看


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM