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"
}
我尝试将对象序列化为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"
}