2015-09-10 41 views
2

我正在使用Spring的ResponseEntity返回HTTP響應。使用responce實體的動態JSON對象 - Spring

在實體中傳遞POJO或MAP時,它將其轉換爲JSON對象。像

return new ResponseEntity<Object>(result, HttpStatus.OK); 

結果可能是POJO類。 (getter和setter方法)

我使用

<bean id="jsonMessageConverter" class="org.springframework.http.converter.json.GsonHttpMessageConverter "> 
</bean> 

現在我想的是,我會得到響應領域的要求清單。我只是想僅迴應這些字段的請求。

對於例如,如果我收到響應字段作爲名稱,身份證。那麼對象只能包含這兩個。

{ 
"name":"test", 
"id":15 
} 

我無法使用@jsonignore或@explore註釋。 B'Coz我想要使用編碼動態完成JSON。

可以通過覆蓋GSON轉換器方法或使用AOP。

有什麼辦法來配置傑克遜的適配器來創建基於字段的對象。

+0

你的意思是你想發送的響應即包含哪些值,你已經獲得了對象請求正確嗎?請求值的數量是固定的還是動態的?準確地說是 –

+0

。請求中的所有字段都需要作爲對象發送(POJO已經有這些字段,但除此之外,我們需要排除)。它是動態的。我們不知道會發生什麼。 – user1677237

+0

你需要使用Gson還是可以切換到Jackson? –

回答

1

如果你可以切換到傑克遜也許你可以使用這個小擴展我寫出於這樣的目的:

https://github.com/Antibrumm/jackson-antpathfilter

+0

感謝馬丁。根據你在github中的例子,我必須在每個方法中添加objectmapper,它在轉換後工作。無論如何,在轉換之前告訴傑克遜。 – user1677237

+0

我創建了一個spring bean,它用一個輔助方法封裝了必要的代碼。 'bean.write(obj,「filters」,...)'。我還沒有嘗試將它與響應者結合起來。我的控制器直接返回字符串。 –

+0

'mixin'配置只能在Object中使用一次。例如,在spring bean的'@ PostConstruct'中。 –