我需要处理 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 {
  }
});