【发布时间】:2021-07-25 09:17:40
【问题描述】:
我尝试使用 java json 注释将字符串转换为浮点数。
public class EtlColumnPojo{
@JsonProperty("value")
private float value;
}
但是有些值字符串不是数字,而是“.”只要。所以它会抛出以下异常。
com.fasterxml.jackson.databind.exc.InvalidFormatException:无法从字符串“.”反序列化类型为
float的值:不是有效的浮点值
所以我制作了自定义的 json 反序列化代码。
public class CustomFloatDeserializer extends JsonDeserializer<Float> {
@Override
public Float deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
// TODO Auto-generated method stub
String floatString = p.getText();
if(floatString.equals(".")) {
return Float.valueOf(0);
}
return Float.valueOf(floatString);
}
}
我添加了自定义反序列化器,如下所示,
public class EtlColumnPojo{
@JsonDeserialize(using = CustomFloatDeserializer.class)
@JsonProperty("value")
private float value;
}
没有上述异常,它可以成功运行。但我想知道这些自定义 json 反序列化代码是否有效。该值仅是点,但恐怕我编写了太多代码来解决这个问题。有没有其他方法可以只用简单的 json 注释来解决这些异常?
【问题讨论】:
标签: java json jackson-databind