【问题标题】:Null Values are assigned as values for a list in POJO SpringBoot/JavaNull 值被分配为 POJO SpringBoot/Java 中列表的值
【发布时间】: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


    【解决方案1】:

    你得到的结果是正确的。

    对于您的 {"EmployeeId":"E2212","assignedWorks":[{}]}} 输入 json,employee.getAssignedWorks().isEmpty() 返回 false 并且 employee.getAssignedWorks().size() 返回 1 是正确的。assignedWorks 字段是一个包含空对象的 json 数组,因此它将被序列化为 assignedWorks 列表在你的 pojo 中作为一个列表,其中包含一个包含所有空字段的作品。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      • 2020-09-04
      • 1970-01-01
      相关资源
      最近更新 更多