我需要处理 NumberFormationException 或 NaN 到 BigDecimal
I need to handle NumberFormationException or NaN to BigDecimal
我遇到了以下错误,
com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Infinite or NaN
当我给予Json request: {"sendAmt" : ""}
并将该 json 对象存储到其他对象使用
gson.fromJson(inputStreamReader,msgClass)
注意 sendAmt 是一个 BigDecimal 类型。
我尝试使用注册 TypeAdapter 的 gson 构建器,但我无法解决这个问题。
我已经尝试使用 TypeAdapter
作为 BigDecimal
数据类型的 gson 构建器。它工作正常。
这是我的 TypeAdapter
代码:
builder.registerTypeAdapter(BigDecimal.class, new TypeAdapter<BigDecimal>() {
@Override
public BigDecimal read(JsonReader reader) throws IOException {
JsonToken token = reader.peek();
if (token == JsonToken.STRING) {
String stringNum = reader.nextString();
if (stringNum == null || stringNum.isEmpty()) {
return null;
} else {
return new BigDecimal(stringNum);
}
} else if(token == JsonToken.NUMBER) {
return new BigDecimal(reader.nextInt());
} else {
reader.skipValue();
return null;
}
}
@Override
public void write(JsonWriter writer, BigDecimal num) throws IOException {
}
});
我遇到了以下错误,
com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Infinite or NaN
当我给予Json request: {"sendAmt" : ""}
并将该 json 对象存储到其他对象使用
gson.fromJson(inputStreamReader,msgClass)
注意 sendAmt 是一个 BigDecimal 类型。
我尝试使用注册 TypeAdapter 的 gson 构建器,但我无法解决这个问题。
我已经尝试使用 TypeAdapter
作为 BigDecimal
数据类型的 gson 构建器。它工作正常。
这是我的 TypeAdapter
代码:
builder.registerTypeAdapter(BigDecimal.class, new TypeAdapter<BigDecimal>() {
@Override
public BigDecimal read(JsonReader reader) throws IOException {
JsonToken token = reader.peek();
if (token == JsonToken.STRING) {
String stringNum = reader.nextString();
if (stringNum == null || stringNum.isEmpty()) {
return null;
} else {
return new BigDecimal(stringNum);
}
} else if(token == JsonToken.NUMBER) {
return new BigDecimal(reader.nextInt());
} else {
reader.skipValue();
return null;
}
}
@Override
public void write(JsonWriter writer, BigDecimal num) throws IOException {
}
});