代码之家  ›  专栏  ›  技术社区  ›  Zed

使用jackson禁用非布尔值到布尔值的自动转换

  •  2
  • Zed  · 技术社区  · 7 年前

    我正在寻找一种方法来禁用在请求主体中使用的非bool值。例如:

    {
      "prop": 23
    }
    

    会被杰克逊转变成 true 对于 myprop 在mypjo内部:

     public ResponseEntity action(@RequestBody @Valid MyPojo myPojo) {
    
     }
    
    public class MyPojo {
    
        @NotNull
        private final boolean myprop;
    
        @JsonCreator
        public MyPojo(@JsonProperty(value = "prop", required = true) boolean myprop) {
            this.myprop = myprop;
        }
    }
    

    禁用非bool值的最佳方法是 麦道普 ,然后在发生这种情况时抛出异常?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Jonathan JOhx    7 年前

    我认为在本例中,对于所有已验证的字段,最好的方法是考虑此自定义验证。 可以为布尔值创建自定义约束,如下所示:
    https://docs.jboss.org/hibernate/validator/5.0/reference/en-US/html/validator-customconstraints.html#validator-customconstraints

    因此可以在字段上添加自定义约束

        @ValidBoolean
        private boolean isReal;