我需要忽略基於用戶輸入/或Spring安全角色的對象響應中的某些屬性的序列化(JSon/Jackson和XML/XStream)(例如,您無權查看此字段的內容,但所有其他人都沒問題等)。如何在Spring MVC Rest中做到這一點? 另一種方法是隻顯示相關的API的用戶,喜歡這裏http://googlecode.blogspot.com.br/2010/03/making-apis-faster-introducing-partial.htmlSpring MVC Rest:如何在Json和XML中實現部分響應?
2
A
回答
1
描述如果使用的是傑克遜,這裏是一些可能的選項來修改JSON序列化的屬性:
使用@JsonIgnore註釋 - 然而,這是靜態的過濾,並且不會讓你因爲你看起來需要
使用@JsonFilter實現基於規則的過濾 - 這將讓你實現一個接口,可以在其中提供喲你的序列化過濾邏輯。你可能會發現這個解決方案太重了。
我經常解決這個問題的方法是從我的Controller方法而不是基礎對象返回一個Map。您可以編寫處理代碼,將對象中的相關字段放入Map中,因此可以完全控制序列化的內容。您可以在Object上包含一個方法來進行轉換。該方法可以是這個樣子:
// RequestObj is whatever 'input' object that indicates what should be filtered public Map<String,Object> convertToMapForRequest(RequestObj request){ // Build return map based on 'this' and request }
相關問題
- 1. spring mvc rest響應json和xml
- 2. Spring + BlazeDS + REST XML響應
- 3. Spring MVC和Hibernate - 如何實現分頁?
- 4. 如何讓spring mvc輸出xml響應?
- 5. Spring MVC - JSON響應 - 如何防止
- 6. Spring MVC - > JSON響應
- 7. 如何在Spring MVC中爲REST API實現HTTP'HEAD'動詞?
- 8. 如何在Spring MVC中爲REST API實現HTTP'OPTIONS'動詞?
- 9. Spring mvc - 爲XML和JSON響應配置錯誤處理
- 10. 如何在Spring-Rest中實現application/vnd.api + json媒體類型?
- 11. Spring REST 3支持XML和JSON
- 12. SOAP和REST如何使用XML/JSON響應?
- 13. Spring MVC,REST,JSON和DispatcherServlet和@RequestMapping
- 14. Spring MVC/Rest - 返回標準響應
- 15. 在spring中添加xml屬性rest xml響應
- 16. 如何在Spring MVC控制器中循環瀏覽JSON響應
- 17. Spring 3 MVC基於標頭的JSON REST響應
- 18. 如何爲Spring @MVC 3.0 REST應用程序實現身份驗證和授權
- 19. 如何從Spring REST存儲庫中包裝JSON響應?
- 20. 實現在Servlet中的XML和JSON之間切換的REST api
- 21. REST請求和JSON響應
- 22. Spring REST實現錯誤404
- 23. Spring MVC中的響應實體3.1.1
- 24. Spring mvc rest,json和xml輸出包含包名
- 25. DI和IOC在spring mvc中的實現
- 26. REST響應 - HTML響應vs JSON或XML中「預期」的含義
- 27. Spring REST - 當URL以.xml結尾時如何強制響應類型爲JSON
- 28. Spring MVC的REST/JSON服務
- 29. Spring MVC - 響應
- 30. Spring mvc:將默認的響應格式從xml更改爲json
感謝@馬特,但這種方法只適用於JSON和XML不輸出,並返回地圖<字符串,對象>是過於抽象,這樣做我將失去回報的語義。我會繼續尋找更好的解決方案並讓你知道。 –
現在我把註釋放在我的課上 @JsonSerialize(include = JsonSerialize.Inclusion.NON_DEFAULT) public class MyClass {} 並將我不喜歡的值設置爲Null。 (在Spring中默認的xml行爲不是打印空值) –
@ wandi.darko你有沒有找到一個很好的方法來做到這一點?我一直在尋找一個好方法,除了瑜伽https://github.com/skyscreamer/yoga圖書館,我還沒有找到任何可行的方法。 – Seagull