本文介紹了SpringBoot:在API返回的對象中不存在空值的情況下,可以在運行時更改DTO嗎?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我有一個SpringBoot應(yīng)用程序,它正在訪問數(shù)據(jù)源的原始API。現(xiàn)在假設(shè)我有一個具有大約50個字段的Customer實體,并且我有一個原始的API,我在其中傳遞列的名稱并獲取該列的值。現(xiàn)在我在SpringBoot中實現(xiàn)API,它使用原始API。
我需要在SpringBoot中為Customer Entity的不同字段組合實現(xiàn)不同的API,并且只返回用戶查詢的對象中設(shè)置的那些字段,并從對象中刪除空值字段。一種方法是為客戶實體的列的不同組合實現(xiàn)不同的DTO。有沒有其他方法來實現(xiàn)相同的,這樣我就不需要為Spring Boot中Customer實體列的不同組合定義不同的dto?
推薦答案
可以直接配置ObjectMapper
,也可以使用@JsonInclude
注釋:
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
OR
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Customer {
private Long id;
private String name;
private String email;
private String password;
public Customer() {
}
// getter/setter ..
}
您可以使用以下示例代碼了解如何執(zhí)行此操作:
Customer customer = new Customer();
customer.setId(1L);
customer.setName("Vikas");
customer.setEmail("[email protected]");
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
String valueAsString = objectMapper.writeValueAsString(customer);
由于密碼已保留null
,您將擁有一個不存在密碼的對象。
{
"id": 1,
"name": "Vikas",
"email": "[email protected]"
}
這篇關(guān)于SpringBoot:在API返回的對象中不存在空值的情況下,可以在運行時更改DTO嗎?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,