jackson json解析器接受int原语的空单引号

时间:2016-01-22 11:29:06

标签: java json jackson primitive-types single-quotes

我在项目中定义了一个REST元素,其中包含带有原始int&的属性。长 。我正在使用Jersey 2.17 在测试期间,当我尝试传递“”字符串时,REST客户端没有报告任何验证错误,但在其余资源中,我将基元的值作为默认值0。这种行为很奇怪,因为一个空字符串在这种情况下不应被接受。如何使请求失败并显示验证错误。

My JSON request:
JSONObject employee = new JSONObject("{name : James}");     
rateLimiter.put("age", "");

Response :
POST -><http://134.141.206.113:8080/Employee     >
data: {"name":"James","age":""}
Status :201 output: {  
  "name" : "James",
  "age" : 0
}

1 个答案:

答案 0 :(得分:0)

检查有效负载字段的空白或空的一种方法是使用Jackson的注释在反序列化时跳过这些字段。这样,如果反序列化对象中不存在必需字段,那么您可以假设在请求发生时该字段为空。

杰克逊的注释

  1. @JsonInclude(Include.NON_NULL)
  2. @JsonInclude(Include.NON_DEFAULT)
  3. 将它们添加到DTO /实体类

    中声明字段的顶部
    @JsonInclude(Include.NON_DEFAULT)
    private int age = 0;
    
    @JsonInclude(Include.NON_NULL)
    private String name;