杰克逊-接受对象属性上的空字符串

时间:2018-08-27 14:34:22

标签: java json spring jackson

我有这样的POJO

@Data
public class Tree {
   String id;
   Leaf leaf;
}

如何制作,我的带有RequestBody“ Tree”的rest控制器将接受属性叶上带有空String的JSON请求,将其忽略并将其视为null。 JSON请求示例

 {
      "id": "foo",
      "leaf": ""
 }

3 个答案:

答案 0 :(得分:1)

您必须将ACCEPT_EMPTY_STRING_AS_NULL_OBJECT的{​​{1}}属性设置为ObjectMapper

请参见documentation

  

确定是否将空String值接受为null   具有数据绑定的常规POJO(“ beans”):这在以下情况下很有用   处理以松散类型的语言编写的端点,并且可能   将缺少的对象表示为空字符串。

如果您使用的是Spring Boot,则可以find details here了解如何配置true

答案 1 :(得分:0)

按如下方式配置ObjectMapper:

ObjectMapper om = new ObjectMapper();
om.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);

答案 2 :(得分:-1)

您需要配置Jackson ObjectMapper接受空字符串为null。为此,只需在配置类中添加以下方法即可。

@Bean
public ObjectMapper mapper() {
    ObjectMapper mapper = new ObjectMapper();
    mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
    return mapper;
}