我们如何才能忽略目标响应中的集合。
public class ClassSource{
private int id;
}
Destination :
public class ClassDestination {
private int id;
@JsonProperty("instructions")
@Valid
private List<Instructions> instructions = new ArrayList<>();
}
在Target中希望完全忽略结果中的指令列表,但其返回的却是空数组。。。我们怎么能忽视这些收藏品呢。
Output :
"id": "1245",
"instructions": []
expecting output like,
Output :
"id": "1245"
@Mapper(componentModel = "spring" , unmappedTargetPolicy = ReportingPolicy.WARN)
public interface PersonMapper {
@Mapping(target = "instructions, expression = "java(null)"")
ClassDestination map(ClassSource source);
}
attempt2:
public interface PersonMapper {
@Mapping(target = "instructions, igonore =true")
ClassDestination map(ClassSource source);
}
正如其他人建议的那样,您获得的是一个空列表,而不是null,因为它在ClassDestination中被初始化为一个新的ArrayList。
如果你不想从ClassDestination中删除初始化,但仍然想要一个null值,也许你可以尝试:
@Mapper(componentModel = "spring" , unmappedTargetPolicy = ReportingPolicy.WARN)
public interface PersonMapper {
@Mapping(target = "instructions", ignore = true)
ClassDestination map(ClassSource source);
@AfterMapping
default void setNullValue(ClassSource source, @MappingTarget ClassDestination destination) {
destination.setInstructions(null);
}
}