我从外部
JSON API获取数据并使用Jackson解析结果.不幸的是,该API将所有字段作为字符串返回,并且当数据不可用时,这些字段将填充“N / A”.
我想用null替换这些字段,特别是当我尝试将JSON字符串字段转换为更具信息性的Java字段时,这些字段令人沮丧.
自定义DeserializationProblemHandler适用于Integer字段(见下文),但它对Java 8的LocalDate字段没用.此外,它会对问题做出反应而不是预测问题.
我无法找到配置到我的ObjectMapper中的预处理器,并且对重写BeanDeserializer的想法感到不安.
你知道更好/更清洁的解决方案来处理这种情况吗?谢谢!
DeserializationProblemHandler
new DeserializationProblemHandler() {
@Override
public Object handleWeirdStringValue(DeserializationContext ctxt, Class> targetType, String valueToConvert, String failureMsg) throws IOException {
return "N/A".equals(valueToConvert) ? null : super.handleWeirdStringValue(ctxt, targetType, valueToConvert, failureMsg);
}
}
在LocalDate字段中处理“N / A”时出现错误消息
Can not deserialize value of type java.time.LocalDate from String "N/A": Text 'N/A' could not be parsed at index 0
(当数据中有日期时工作正常)