【发布时间】:2021-10-04 10:18:33
【问题描述】:
我有一个 POJO,它将从 Kafka Consumer 读取数据。我里面有几个列表对象,我无法理解它的 Null 行为
EmployeeEBO.java
@Getter
@Setter
@Builder
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@NoArgsConstructor
@AllArgsConstructor
public class EmployeeEBO implements Serializable {
private static final long serialVersionUID = 1L;
private String EmpId;
private List<AssignedWorkEBO> assignedWorks;
}
AssignedWorkEBO.java
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder(toBuilder = true)
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class AssignedWorkEBO{
private String assignedWorkType;
private String assignedWorkId;
}
所以我正在尝试检查来自 kafka 的数据对于 AssignedWorkEBO 是否为 Empty/Null 条件并且它的行为很奇怪
当 pojo 被打印时 收到来自 kafka 的有效载荷:{"Employee":{"EmployeeId":"E2212","assignedWorks":[{}]}}
但是当我检查 isempty 时它会抛出错误
log.info("employee.getAssignedWorks().isEmpty();" + employee.getAssignedWorks().isEmpty());//false
log.info("employee.getAssignedWorks().size();" + employee.getAssignedWorks().size()); //1
所以理想情况下它应该是空的,大小为零
从 kafka 接收到负载:{"Employee":{"EmployeeId":"E2212","assignedWorks":[{"assignedWorkId":"34241"}]}} 这没关系,因为它具有正确的值
log.info("employee.getAssignedWorks().isEmpty();" + employee.getAssignedWorks().isEmpty());//false
log.info("employee.getAssignedWorks().size();" + employee.getAssignedWorks().size()); //1
但是为什么 Null 会成为价值。这是因为我使用了任何杰克逊注释吗?
请指教
谢谢
【问题讨论】:
标签: java json jackson spring-kafka json-deserialization