ObjectMapper 在尝试构造具有空字段的实例时抛出 JsonMappingException

ObjectMapper throws JsonMappingException when it try to construct instance with null field

我尝试将对象序列化为json字符串,什么时候会有空字段。 当所有字段初始化时 - 一切正常,但是当我设置字段 null 值时,出现异常:

com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException).

我的代码:

public String toJsonString(T t) throws JsonProcessingException{
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
    String dtoAsString = objectMapper.writeValueAsString(t); //string where I got the exception
    return dtoAsString;
}

对象:

SomeObject{
    @JsonSerialize(using = LocalDateSerializer.class)
    LocalDate date = LocalDate.now();
    Long value = null;
}

PS:

问题在于我无法在 json 中自动解析 someObject,因为我遇到了另一个异常 - 我需要将 date 解析为特殊的字符串格式。所以我需要完全按照我的方式使用 - objectMapper(Gson().toString 错误地序列化了我的 LocalDate 值)。

我找到解决方案:

由于其中一个字段尚未初始化而发生错误,因此ObjectMapper抛出了异常。

只需将 @JsonInclude(JsonInclude.Include.NON_NULL) 添加到您的 POJO class:

@JsonInclude(JsonInclude.Include.NON_NULL)

SomeObject{
    String date = "11.01.19";
    Long value = null;
}

在结果中我们将得到 json 没有可空字段:

{
    "date" : "11.09.19"
}