【发布时间】:2020-07-20 17:10:03
【问题描述】:
在我的 crud 应用程序中,post api 接收以下正文
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BodyRequest {
private String description;
private List<Request> ListRequest;
}
当 listRequest 未在请求正文中传递时,它变为 null 当 listRequest 列表为空时,有什么方法可以为它设置一个空值? 我想知道是否有可能在列表中添加一个注释,允许@value或@json等修改
我尝试添加 @JsonDeserialize(使用 = 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"
【问题讨论】:
-
自己创建一个 noArgs 构造函数,并初始化它。
-
或者内联初始化。
-
也许你想构建自己的反序列化器baeldung.com/jackson-deserialization
-
@Robertiano 他们绝对不想那样做。