Null 值被指定为 POJO 中列表的值 SpringBoot/Java
Null Values are assigned as values for a list in POJO SpringBoot/Java
我有一个 POJO 将从 Kafka 消费者读取数据。我里面有几个列表对象,我无法理解它的 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 会作为值出现。这是因为我使用了任何杰克逊注释吗?
请指教
谢谢
您得到的结果是正确的。
对于你的 {"EmployeeId":"E2212","assignedWorks":[{}]}}
输入 json 是正确的 employee.getAssignedWorks().isEmpty()
returns false 和 employee.getAssignedWorks().size()
return 1. assignedWorks
字段是一个 json 数组,其中包含一个空对象,因此它将被序列化到您的 pojo 中的 assignedWorks
列表,作为一个包含所有空字段的作品的列表。
我有一个 POJO 将从 Kafka 消费者读取数据。我里面有几个列表对象,我无法理解它的 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 会作为值出现。这是因为我使用了任何杰克逊注释吗?
请指教
谢谢
您得到的结果是正确的。
对于你的 {"EmployeeId":"E2212","assignedWorks":[{}]}}
输入 json 是正确的 employee.getAssignedWorks().isEmpty()
returns false 和 employee.getAssignedWorks().size()
return 1. assignedWorks
字段是一个 json 数组,其中包含一个空对象,因此它将被序列化到您的 pojo 中的 assignedWorks
列表,作为一个包含所有空字段的作品的列表。