如何让 ObjectMapper 在反序列化期间忽略空字符串字段?

问题描述 投票:0回答:1

我的编辑 API 有这个服务方法,它将我的 pojo 类映射到实体类以进行更新操作。 CustomerDetail 是我的 Dto 类。

public CustomerRegistration editCustomerDetails
(Long id, CustomerDetail customerDetail) throws JsonMappingException 

{

        CustomerRegistration customer = customerRegistrationRepository.findByRegistrationId(id);
        if (customer == null)
            return null;

        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.updateValue(customer, customerDetail);
        customer.setModifiedTs(Timestamp.valueOf(LocalDateTime.now()));
        customerRegistrationRepository.save(customer);
        return customer;

    }

假设我想更新 customerID 1 的客户详细信息,我的请求正文由以下字段组成:

{
"firstName":"Leon",
"middleName":"",
"lastName":"Kennedy",
"addr1":"cross",
"addr2":"new"
}

我的客户表已经有一个 customerID 1 的中间名。我想忽略表中 middleName 字段的更新操作,因为请求正文有一个空字符串。就我而言,它在表中被设置为 null/空。我怎样才能避免这种情况?

我的pojo类已经用@JsonInclude(Ininclude.NON_NULL)注释了

java json spring-boot jackson objectmapper
1个回答
0
投票

尝试更改注释值

@JsonInclude(Include.NON_NULL) // ignores null values

致:

@JsonInclude(Include.NON_EMPTY) // ignores empty values (empty string, null, etc)
© www.soinside.com 2019 - 2024. All rights reserved.