首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用@NotNull?

如何使用@NotNull?
EN

Stack Overflow用户
提问于 2018-11-28 04:58:32
回答 1查看 3.3K关注 0票数 0

我有一个使用杰克逊的Spring应用程序。我使用的不是泽西岛,只是普通的Spring。我有一个包装请求类:

代码语言:javascript
复制
public class WrapperRequest {
   @NotNull
   private final Object obj; // some object that corresponds with a JSON object
   @JsonCreator
   public WrapperRequest(@JsonProperty("wrapper") final Object obj) {
     this.obj = obj;
   }
   public Object getObj() {return obj}
}

用于此的JSON如下所示:

代码语言:javascript
复制
 {
  "wrapper":{ 
    //Object data
  } 
 }

来自javax的@NotNull并不像我例外那样工作。我希望它的工作方式是,如果使用者发送一个JSON,其错误类型如下:

代码语言:javascript
复制
 {
  "wrapperr":{ 
    //Object data
  } 
 }

Jackson将不会映射我的包装类,因为JSON中的键与JsonProperty不匹配,也就是说(“包装器”)(因此对象将为null,如果我试图与对象交互,那么我稍后将得到NPE )。我是不是用错了杰克逊?也就是说,Jackson映射了它所知道的事情,其余的都是空的,还是我没有正确地使用@NotNull注释?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-28 05:27:56

Jackson不知道Bean验证注释,比如@NotNull。对于"null“的特定情况,可以将构造函数参数标记为@JsonProperty(required = true)。更一般地,您可以像以前一样对属性使用@NotNull,并使用@Valid标记MVC控制器参数(这不会导致反序列化失败,但如果验证失败,则会导致Spring返回400 )。

请注意,您还可能对UNWRAP_ROOT_VALUE特性感兴趣,这将允许您在这种特殊情况下消除对包装类的需求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53512416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档