首页 > 解决方案 > 如何将空列表转换为空列表?

问题描述

在我的 crud 应用程序中,post api 收到以下正文

@Data
@AllArgsConstructor
@NoArgsConstructor
public class BodyRequest {

    private String description;
    private List<Request> ListRequest; 
}

当 listRequest 未在请求正文中传递时,它变为 null 有没有办法在 listRequest 列表为空时为它设置一个空值?我想知道是否有可能在列表中添加一个注释,允许@value 或@json 等修改

我尝试将 @JsonDeserialize (using = OptimizedListDeserializer.class) 添加到列表中并定义 OptimizedListDeserializer 类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class BodyRequest {

    private String description;
    @JsonDeserialize (using = OptimizedListDeserializer.class)
    private List<Request> ListRequest; 
}

public class OptimizedListDeserializer extends StdDeserializer<List<Request> > {


    protected OptimizedListDeserializer(StdDeserializer<?> src) {
        super(src);
        // TODO Auto-generated constructor stub
    }

    @Override
    public List<Request>  deserialize(JsonParser jp, DeserializationContext ctxt)
            throws IOException {
           return new ArrayList<>();
    }
}

但是当我尝试调用服务时,我得到了

"code": 415,
"error": "Content type 'application/json;charset=UTF-8' not supported"

标签: javaspringjpajackson

解决方案


最简单的方法是像这样初始化类中的列表

@Data
@AllArgsConstructor
@NoArgsConstructor
public class BodyRequest {

    private String description;
    private List<Request> ListRequest = new ArrayList(); 
}

推荐阅读